精华内容
下载资源
问答
  •   从PC到移动,数字技术充斥着整个社会,也改变了人们的生活方式。...手机、平板电脑取代了洋娃娃汽车在孩子们心中的位置,游戏、动画成为日常,家长在感叹孩子聪明的同时,又担心孩子会“不务正业”。  ...

    原文网址:http://blog.sina.com.cn/s/blog_14e6f6f5a0102y9vi.html

     

    从PC到移动,数字技术充斥着整个社会,也改变了人们的生活方式。当手机成为必需品之后,不仅是成人开始对它产生依赖,作为下一代的孩子,也深受其影响。手机、平板电脑取代了洋娃娃小汽车在孩子们心中的位置,游戏、动画成为日常,家长在感叹孩子聪明的同时,又担心孩子会“不务正业”。

     

    孩子玩游戏,自然就成了家长的“心病”。随便搜一下,就可以找到很多的帖子,是在教家长如何引导孩子玩游戏的,可效果如何,也只有全都使用过才知道。不过,作为一家教育机构,我们建议宜疏不宜堵,家长不如引导孩子们学习编程,做游戏的创造者,游戏规则的制定者,总之,你的游戏你做主!

     

    《FlappyBird》这款手机游戏大家都很熟悉,玩家点击屏幕,小鸟就会往上飞,不断的点击就会不断的往高处飞。放松手指,则会快速下降。所以玩家要控制小鸟一直向前飞行,然后注意躲避途中高低不平的管子,现在我们在Scratch中完成这款游戏的制作。

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    主要积木块:


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    知识重点

     

    (1)绘图编辑器的使用(绘制小鸟和管道)

     

    (2)随机数的使用

     

    (3)条件判断的逻辑推理(得分的条件)

     

    (4)理解克隆技术是本游戏的关键

     

    (5)事件的使用(按空格上跳)和自由落体模拟

     

    游戏规则

     

    · 在游戏开始后,点击屏幕,要记住是有间歇的点击屏幕,不要让小鸟掉下来。

     

    · 尽量保持平和的心情,点的时候不要下手太重,尽量注视着小鸟。

     

    · 游戏的得分是,小鸟安全穿过一个管道且不撞上就是1分。当然撞上游戏结束。

     

    · 小鸟掉在地上,游戏结束。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    背景绘制


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    绘制时,我们用到椭圆工具,矩形工具,填充工具和选择工具,颜色样本如下图,你也可以使用其他的颜色绘制。白云和绿灌木丛,是很多的椭圆叠加的效果。地面用一个矩形绘制就可以了。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    绘制小鸟及代码

     

    删除角色列表中的默认的小猫,点击绘制新角色。使用画笔工具绘制一个小鸟,用填充工具添加颜色。如果角色有点大,用缩小工具点击小鸟,把它缩小放在舞台合适位置。给它取个名字“笨鸟”。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    选中小鸟角色,给它编写脚本。左边脚本是让小鸟自由落体运动,右边的脚本处理空格事件(小鸟往上弹跳),如果碰到地面游戏结束。


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    注意:y坐标值减少,则角色位置向下移动。反之y坐标值增加,则角色位置向上移动。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    绘制新角色取名为“管道”,在造型列表中绘制(使用矩形与填充工具)5个造型如下图:


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    五个造型汇总


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    设置好造型的中心点为管道的垂直中央,与舞台坐标一致,方便脚本的编写和理解。


    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    五个造型

     

    再给小鸟添加脚本,当小鸟碰到管道时小鸟翻滚下来。并给管道发送“停止移动”消息。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

     

    当管道接受“停止移动”消息时,添加如下脚本,停止管道其他脚本,提示小鸟被撞死!

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    管道部分

     

    管道的脚本代码,需要添加三个变量(分数,计一次分)。

     

    游戏开始时分数为零分,管道隐藏等待一个随机数,产生克隆体。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
     

    克隆体启动时,在1到5号造型随机选择,先移动到舞台右侧,显示克隆体并向左侧在2秒完成移动,达到坐标(-200,13)删除克隆体(即此管道消失)。

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    下面脚本是当小鸟穿过管道时,玩家增加一分,等分的条件是管道的X坐标小于-100(你设计游戏时请注意调整此数值);为了解决穿过管道反复加分的情况,我们添加了计一次分变量。

     

    计一次分,使用布尔变量(false,true)

     

    10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏

     

    巩固延伸

     

    · 可以添加一个开始的按钮,这样输掉可以重新玩;

     

    · 为小鸟撞死添加一个凄惨的叫声;

     

    · 添加的一个大号数字积

     

    是不是很简单呢?赶快动手做起来吧!

     

    Scratch不是一门编码语言,它是一款图形化编程启蒙工具,可以实现非常多的小游戏编程设计,比如:愤怒的小鸟、植物大战僵尸、街舞少年、飞扬的小鸟等,这些小游戏的设计在对孩子的逻辑培养上有很大的帮助哦!

    展开全文
  • 如何java做一个桌面游戏

    万次阅读 多人点赞 2017-11-21 20:48:04
    1、首先这些游戏界面的出现,毫无疑问是java Swing的,你只有学会了Swing,才能让界面出来,我在此先附上一个别人的五子棋的游戏,这不是重点,今天的重点是怎么实现桌面游戏。 package cn.edu.lnu.util; ...

    也许很多同学都曾想过这样一个问题,那些在桌面上的图标一点击,游戏就运行了,这是怎么实现的那?


    今天让我来演示一下这中间的一个过程。


    1、首先这些游戏界面的出现,毫无疑问是java Swing做的,你只有学会了Swing,才能让界面做出来,我在此先附上一个别人做的五子棋的游戏,这不是重点,今天的重点是怎么实现桌面游戏。

    package cn.edu.lnu.util;
    
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    
    /**
     * 
     * @author sky
     *
     */
    public class FiveChessGame {
    	/**
    	 * 控件属性
    	 */
    	private JFrame frame; // 五子棋游戏的窗口框架
    	private GameMap map; // 五子棋游戏的窗口容器
    	private JMenuBar bar; // 菜单
    	private JMenu game; // 菜单项
    	private JMenuItem[] items; // 菜单下拉项
    
    	/**
    	 * 静态数据属性
    	 */
    	private static final int BOARD_SIZE = 15; // 棋盘大小(15 * 15)
    	private static final int ROW_WIDTH = 36; // 间距
    	private static final int SPACE = ROW_WIDTH / 2; // 上下边间距
    
    	/**
    	 * 数据属性
    	 */
    	private boolean player; // true黑,false白
    	private char[][] board; // 后台虚拟棋盘
    
    	public FiveChessGame() {
    		player = true; // 游戏先黑子下
    		board = new char[BOARD_SIZE][BOARD_SIZE]; // 建立后台虚拟棋盘
    		clearMap();
    		createGUI();
    	}
    
    	/**
    	 * 对GUI控件的创建
    	 */
    	private void createGUI() {
    		frame = new JFrame("五子棋"); // 实现五子棋游戏窗口框架
    		map = new GameMap(); // 实现五子棋游戏窗口容器
    		bar = new JMenuBar(); // 建立菜单栏
    		game = new JMenu("游戏"); // 建立名为“游戏”的菜单
    		items = new JMenuItem[2]; // game菜单下创建2个子菜单项
    		game.add(items[0] = new JMenuItem("重新开始"));// 第一个子菜单为“重新开始”
    		game.add(items[1] = new JMenuItem("退出")); // 第二个子菜单为“退出”
    	}
    
    	/**
    	 * 清空棋子
    	 */
    	protected void clearMap() {
    		for (int i = 0; i < BOARD_SIZE; i++) {
    			for (int j = 0; j < BOARD_SIZE; j++) {
    				board[i][j] = '+';
    			}
    		}
    	}
    
    	/**
    	 * 运行游戏
    	 */
    	public void start() {
    		map.setPreferredSize(new Dimension(ROW_WIDTH * (BOARD_SIZE - 1) + SPACE
    				* 2, ROW_WIDTH * (BOARD_SIZE - 1) + SPACE * 2));
    		map.addMouseListener(new MouseAdapter() {
    			// 鼠标点击事件
    			public void mouseClicked(MouseEvent e) {
    				// 将用户鼠标事件的座标转换成棋子数组的座标。
    				int xPos = (int) (e.getX() / ROW_WIDTH);
    				int yPos = (int) (e.getY() / ROW_WIDTH);
    				if (board[xPos][yPos] == '+') {// 判断是否下过棋
    					board[xPos][yPos] = player ? 'b' : 'w'; // 给虚拟键盘赋值
    					map.repaint(); // 通过读取board数组进行贴图
    					if (isWin(xPos, yPos)) {// 如果有满足胜利条件的玩家了
    						map.repaint(); // 刷新图像
    						String str = player ? "黑方胜利" : "白方胜利";
    						JOptionPane.showMessageDialog(null, str, "游戏结束",
    								JOptionPane.PLAIN_MESSAGE); // 弹出消息框
    						clearMap(); // 清空棋盘
    						map.repaint(); // 刷新棋盘
    						player = true; // 新一局继续黑子先下
    					} else {
    						player = player ? false : true; // 切换玩家
    					}
    				}
    			}
    		});
    		// 点击重新开始事件
    		items[0].addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String str = "是否要重新开始游戏?";
    				// 添加消息对话框
    				if (JOptionPane.showConfirmDialog(null, str, "重新开始",
    						JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    					clearMap(); // 清空棋盘
    					map.repaint(); // 刷新棋盘
    					player = true; // 玩家为黑棋
    				}
    			}
    		});
    		// 点击退出事件
    		items[1].addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String str = "是否要退出游戏?";
    				// 添加消息对话框
    				if (JOptionPane.showConfirmDialog(null, str, "重新开始",
    						JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    					System.exit(0); // 退出
    				}
    			}
    		});
    		// 点关闭按钮事件
    		frame.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e) {
    				String str = "是否要退出游戏?";
    				// 添加消息对话框
    				if (JOptionPane.showConfirmDialog(null, str, "退出游戏",
    						JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    					System.exit(0); // 退出
    				}
    			}
    		});
    		bar.add(game);
    		frame.setJMenuBar(bar);
    		frame.add(map);
    		frame.pack();
    		frame.setLocation(250, 50);
    		frame.setResizable(false);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    	}
    
    	/**
    	 * 纵向找
    	 */
    	protected boolean find(int x, int y) {
    		int i, num = 1;
    		char temp = player ? 'b' : 'w';
    		for (i = x + 1; i < 15; i++) {// 向下找
    			if (board[i][y] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		for (i = x - 1; i >= 0; i--) {// 向上找
    			if (board[i][y] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * 横向找
    	 */
    	protected boolean find2(int x, int y) {
    		int i, num = 1;
    		char temp = player ? 'b' : 'w';
    		for (i = y + 1; i < 15; i++) { // 向右找
    			if (board[x][i] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		for (i = y - 1; i >= 0; i--) {// 向左找
    			if (board[x][i] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * \方向
    	 */
    	protected boolean find3(int x, int y) {
    		int i, j, num = 1;
    		char temp = player ? 'b' : 'w';
    		for (i = x + 1, j = y + 1; i < 15 && j < 15; i++, j++) {// 向下方
    			if (board[i][j] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		for (i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {// 向上方
    			if (board[i][j] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * /方向
    	 */
    	protected boolean find4(int x, int y) {
    		int i, j, num = 1;
    		char temp = player ? 'b' : 'w';
    		for (i = x + 1, j = y - 1; i < 15 && j >= 0; i++, j--) {// 向下
    			if (board[i][j] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		for (i = x - 1, j = y + 1; i >= 0 && j < 15; i--, j++) { // 向上
    			if (board[i][j] == temp) {
    				num++;
    				if (num == 5) {
    					return true;
    				}
    			} else {
    				break;
    			}
    		}
    		return false;
    	}
    
    	/**
    	 *判断胜负
    	 */
    	protected boolean isWin(int x, int y) {
    		return (find(x, y) || find2(x, y) || find3(x, y) || find4(x, y));
    	}
    
    	/**
    	 * 内部容器类,用于实现图像处理
    	 */
    	private class GameMap extends JPanel {
    		private static final long serialVersionUID = 16578987565248L;
    
    		public void paintComponent(Graphics g) {
    			super.paintComponent(g);
    			// 棋盘
    			g.setColor(new Color(200, 100, 50)); // 设为桔黄色
    			g.fillRect(0, 0, ROW_WIDTH * (BOARD_SIZE + 1), ROW_WIDTH
    					* (BOARD_SIZE + 1)); // 填充棋盘
    			g.setColor(Color.black); // 设为黑色
    			for (int i = 0; i < BOARD_SIZE; i++) {// 画竖线
    				g.drawLine(SPACE + ROW_WIDTH * i, SPACE, SPACE + ROW_WIDTH * i,
    						SPACE + ROW_WIDTH * (BOARD_SIZE - 1));
    			}
    			for (int i = 0; i < BOARD_SIZE; i++) {// 画横线
    				g.drawLine(SPACE, SPACE + ROW_WIDTH * i, SPACE + ROW_WIDTH
    						* (BOARD_SIZE - 1), SPACE + ROW_WIDTH * i);
    			}
    			// 画点
    			g.fillOval(SPACE + 3 * ROW_WIDTH - 3, SPACE + 3 * ROW_WIDTH - 3, 7,
    					7);
    			g.fillOval(SPACE + 11 * ROW_WIDTH - 3, SPACE + 3 * ROW_WIDTH - 3,
    					7, 7);
    			g.fillOval(SPACE + 3 * ROW_WIDTH - 3, SPACE + 11 * ROW_WIDTH - 3,
    					7, 7);
    			g.fillOval(SPACE + 7 * ROW_WIDTH - 3, SPACE + 7 * ROW_WIDTH - 3, 7,
    					7);
    			g.fillOval(SPACE + 11 * ROW_WIDTH - 3, SPACE + 11 * ROW_WIDTH - 3,
    					7, 7);
    
    			// 棋子
    			// 遍历数组,绘制棋子。
    			for (int i = 0; i < BOARD_SIZE; i++) {
    				for (int j = 0; j < BOARD_SIZE; j++) {
    					if (board[i][j] == 'b') {// 绘制黑棋
    						g.setColor(Color.black);
    						g.fillOval(SPACE + i * ROW_WIDTH - ROW_WIDTH / 2, SPACE
    								+ j * ROW_WIDTH - ROW_WIDTH / 2, ROW_WIDTH,
    								ROW_WIDTH);
    					}
    					if (board[i][j] == 'w') {// 绘制白棋
    						g.setColor(Color.white);
    						g.fillOval(SPACE + i * ROW_WIDTH - ROW_WIDTH / 2, SPACE
    								+ j * ROW_WIDTH - ROW_WIDTH / 2, ROW_WIDTH,
    								ROW_WIDTH);
    					}
    				}
    			}
    		}
    	}
    
    	public static void main(String[] args) {
    		FiveChessGame game = new FiveChessGame();
    		game.start();
    	}
    }
    
    


    2、当这些做完之后,怎么让java程序脱离MyEclipse运行,对的,打成jar包,jar包在java里就是可执行文件。相信MyEclipse里打jar包应该不用我教了吧。

    3、把这个jar包放到某个磁盘下,比如D盘,直接复制就行,然后右键,创建桌面快捷方式。,桌面上就有个这东西。

    4、重命名,换图标,图标格式必须是ico格式,因此你从网上找的jpg图片必须转换格式,这里有个在线转换网站:http://www.bitbug.net/

       


    这样,通过这个快捷方式就能指向jar包所在的磁盘了,好了,不说了,游戏开始了。。。。

    展开全文
  • 很多人想学Python程序设计或者已经了解过一点Python程序设计基础,却没办法开发出一个项目。今天,通过演示一个简单的控制台小游戏制作,手把手教你如何Python编...

    很多人想学Python程序设计或者已经了解过一点Python程序设计基础,却没办法开发出一个项目。


    今天,通过演示一个简单的控制台小游戏制作,手把手教你如何用Python编写一个游戏程序,即便你是个新手,也完全可以跟着操作。


    1

    Python是什么?



    开始前,我们先简明扼要的讨论一下Python是什么,以及Python应该注意的一些规范。

    1、Python简介

    Python广泛应用web开发、人工智能、数据分析、自动化运维领域,对初学者来说,是一门相对于其他程序设计语言来讲容易上手的一门程序设计语言。

    2、规范

    在Python之中使用#来表示单行注释,三重引号来表示多行注释,注释应该遵循 “奥卡姆剃刀原理”,即不要使用不必要的注释,好的代码胜于千言万语。

    如无必要,勿增实体

    在对变量和函数命名的时候,尽量要使用英文单词,一眼就能明白该变量或该函数的用处。

    如有必要,可以使用todo注释,来表明将来要做某事,例如下面的注释

    # TODO(Zeke) Change this to use relations.


    那么接下来,我们进入这次文章的主题吧——控制台的井字棋游戏,效果如下图所示。

    640?wx_fmt=gif



    2

    用Python完成控制台小游戏



    既然是控制台游戏,我们欢迎界面就不做的花里胡哨的了。

    1首先我们先创建一个欢迎界面(界面如下)

    其实就是在屏幕上输出下面格式的内容

    640?wx_fmt=png

    我们可以使用pycharm、IDLE、sublime等开发工具来帮助我们开发,首先我们先创建一个game.py文件,打开文件,输入如下的代码:

    640?wx_fmt=png

    此时,我们可以测试一下,这个欢迎界面是否正常。


    2确认玩家选择哪种标记

    这里我们就假设只能选择O或者X?这里我们让玩家自己选择。我们一样定一个函数来确定玩家的使用标记。

    640?wx_fmt=png


    3、确认玩家还是电脑先手

    这里采用了random模块,来随机确定玩家先手还是电脑先手。

    原理:我们产生一个从0到1的随机整数,如果是0就是电脑先手,如果非0就是玩家先手。

    640?wx_fmt=png


    4、接下来主要的游戏逻辑部分的确定,输赢判断的逻辑(重点)。

    我们先把游戏的步骤给大家分析清楚了。

    640?wx_fmt=png


    5、游戏的运行逻辑

    电脑与玩家轮流下棋,每次下棋都要判断要下的位置是否已经有棋了,并且下完后判断是否产生了进行输赢的判断。


    6、最后可以询问玩家是否要继续游戏

    相关代码在群里(拉到底部入群),提供大家下载阅读,体验。



    3

    Python领进门



    自己动手的项目是不是有更深的学习体会~Python还能实现更多好玩的事情,这次没过瘾的同学可以进群交流,同行交流、实战案例统统都有~

    网易云课堂联合北京理工大学名师嵩天推出《Python应用基础》课程,入群即可获得免费体验课以及小姐姐的免费直播~

    PART1

    《Python入门》免费体验课程 


    课程讲师

    640?wx_fmt=jpeg

    “双一流”名校、“国家精品课程”

    Python设计名师:嵩天



    课程大纲

    第一章 :AI时代的主流语言--Python实际应用

    第二章 :想要学习Python? 你得先准备这些

    第三章 :一小时Python入门实践



    PART2

    《默念芝麻开门,领你Python入门》

    免费直播课 

    7月25日20:00


    课程讲师

    640?wx_fmt=png

    晨煦,Python应用基础微专业金牌老师


    直播大纲

    Python的萝莉属性:库多、码少、易推倒

    Python的正确入门方式:被安排的明明白白

    Python的应用方向:大数据?人工智能?OK!

    实践案例:@_#?/$%能画画?python能带你飞



    快来听小姐姐超好玩的直播


    扫码加入QQ群


    即可免费攻读《Python入门》体验课

    640?wx_fmt=png

    群号:607155680


    为了保证学习体验,

    本次Python入门体验课限时开放

    数量有限,欲报从速


    点击阅读原文,预约超好玩的小姐姐直播~

    展开全文
  • java做一个简单的打字游戏

    万次阅读 多人点赞 2018-05-15 23:53:27
    于是就有了下文首先建一个类MyTyping,只有main方法 运行main方法就可以看到出现屏幕中心出现一个窗体(大小是300*400)代码逻辑也就思路里那么多。觉得丑的可以自己优化下,个人觉得没必要OK,...

    Java也是可以做桌面程序的。只不过需要运行在装有JDK的电脑环境上,所以应用不是很广泛,但是用来提高自身的代码逻辑还是可以的!偶有一天看到金山的打字通,就想起何不做个简单的打字游戏用来练练手。于是就有了下文

    首先建一个类MyTyping,只有main方法

     

    运行main方法就可以看到出现屏幕中心出现一个窗体(大小是300*400)

    代码逻辑也就思路里那么多。觉得丑的可以自己优化下,个人觉得没必要

    OK,出现后就进行下一步

    在同一包下新建MyPanel类。继承Panel类

     

     

    此时运行main方法,窗体上出现了  黑色的字母C。

     

    那接下来,就是要让drawString第一个参数26个随机字母,第二个参数为不超过300的随机数,第三个参数为不超过400的随机数

    改造下:

    g.drawString(new Character((char)(Math.random()*26+97)).toString().toUpperCase(), (int)(Math.random()*300), (int)(Math.random()*400));

    随机数不会的可以自己百度去。。

    多次点击运行,可以看到已经实现,随机位置,随机字母的效果

    OK,再下一步。出现10个随机字母。加个循环即可

     

    for (int i = 0; i < 10; i++) {

    //1.出现的元素,2.元素的x轴,3.元素的y轴

    g.drawString(new Character((char)(Math.random()*26+97)).toString().toUpperCase(), (int)(Math.random()*300), (int)(Math.random()*400));

    }

    效果:(但是有的字母在边缘看不到,没关系,等全部完成了再来优化)

     

    已经看到 效果已经有了。但是我们设想的的是 字母需要往下移动,怎么完成呢?

    也很简单。用一个容器来储存随机字母,以及它的x轴,y轴

    改造如下:通过构造方法来实现随机的实现


    再次运行,效果一样

    接下来,实现线程,让它下坠

    代码改造如下:实现线程需要实现Runnable接口

     

    运行之后,字母已经实现下坠效果了

    核心已经完成了。接下来,加入:

    字母超出窗体。重新生成。run方法改造如下

     

    运行,效果也出来了

    再接下来 加入计数器

    代码改造如下:定义全局变量来储存积分

     

    Paint方法:如果积分小于0,不能进来绘制方法,并且出现 game over 字样

     

    Run方法:如果积分小于0,线程停止

     

    再次运行。字母超出窗体的时候会在最上面重新生成随机字母。并且积分会-100,当到0时会出现 game  over字样,线程也停止了

    但我们现在也发现了。一开始字母随机的位置不对,它可能随机的y轴为350,那岂不是刚出现就要消失了?怎么给人时间去按呢?简单。把生成随机y轴后面的数值改成50,那么他就只会在0-50之间的高度上出现了

    改造构造方法:

     

    运行后,结果也很OK

    接下来 实现键盘录入效果

    MyPanel实现 KeyListener接口,并实现相应方法(一共三个)

    我们只用其中的keyPressed键盘按下事件


    main方法中将键盘事件注册进去

    再次运行,控制台会输出你输入的字母

    那接下来要做的估计都猜到了。匹配键盘录入的字母,

    相同:消除这个字母,并且在最上面重新生成,积分+100

    不相同:积分-100

    代码改造如下:

     

    但是运行是不是有问题?只要输错一次。直接游戏结束,这是因为输的字母不在范围内,它会循环-100,10次,所以立马就结束了,所以我们现在再给它加个计数器,以避免循环-100

    代码改造如下:

     

    现在效果OK了,但是又有新问题了,如果有一样的两个字母,它并不一定会消除最下面的,但是我们需要它消除最下面的,刚刚我们加了计数器去实现它的减,那么就再加个计数器实现它的加,当键盘录入匹配时,记录下来y轴,跟原始值或者上一个值比较,如果大于,就覆盖这个计数器为当前Y轴,那么最后循环下来,相同的字母也只会保留Y轴最大的那个

    代码改造如下

     

    重新运行,效果基本就算实现了。

    可以加一些小的优化。字体加大,颜色随机。

    颜色随机,直接放在MyPanel类里就行

    改造代码

     

    如果这样改造。只要动一下就会变颜色。我们想要的是 一生成就固定,直到消失

    那还是用容器吧,跟存储随机字母一样的方法,还是全局变量

     

    OK,再次运行,完美实现

    字体加大:

    drawString方法上面加

     

    看一下效果图

     

    还是可以的哈。好了就写到这里吧,核心逻辑代码实现就OK了,再写下去要精通swing了

    当然这个问题还是有的

    字母重叠。没有关闭按钮。没有再来一盘按钮。没有音效

    有兴趣的童鞋 可以自己着手优化下。不过个人觉得没必要。因为做的再好,也得用户装了JDK才能运行,后期可以尝试用易语言 或者C#做下这种小工具。

    代码我放在github上,有不明白的需要参考可以去下载

    地址:点我
    展开全文
  • DirectX游戏开发——从一个小游戏开始

    千次阅读 多人点赞 2014-05-20 14:48:19
    DirectX游戏开发——从一个小游戏开始
  • 自己一个超级简单的小游戏

    万次阅读 2017-04-14 10:14:53
    自己一个简单的uniy3d小游戏方向键控制一个小球躲避别的小球,撞到指定的墙胜利,被别的球撞到失败。初学者练手 Playermove Enemymove Islose_Trigger Spawn Camera follow_player UI WallIsWin游戏图片 代码...
  • 我花了一夜数据结构给女朋友写H5走迷宫游戏

    万次阅读 多人点赞 2019-09-10 23:27:18
    起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!...而我答道:能干事情多了,比如写迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果数据结构与算法造出东西来呢? ...
  • 公司是模组厂(摄像头),需要自行开发的程序软件来烧录读取信息、测试功能是否良好,无意中发现后台打开微软自带的小游戏“蜘蛛纸牌”后,部分电脑上的烧录读取程序软件可以大幅度加快运行速度,每一个产品的烧录...
  • 微信小游戏即将开放?有我们在,你还赶得上! 根据微信官方对外公开的消息,微信小游戏的脚步越来越接近了。它的开发者资格门槛和使用者门槛...但是如果你想借助微信的平台,做一个交互性、可玩性很强的 联网游戏 ...
  • 使用VS制作一个小游戏(五子棋)

    千次阅读 多人点赞 2019-07-25 01:35:21
    使用VS制作一个小游戏(五子棋) 一、前期准备: 下载Visual Studio(以下使用的是VS2017) 下载Easyx库:官方easyx库下载 右上方下载 二、思路理解 (本次是简单的单机双人五子棋) 1、初始化一个15*15的棋盘,将...
  • 更多精彩尽在微信公众号【程序猿声】 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类class Enemy ...这次还是python的pyg...
  • turtle写一个猫和老鼠的小游戏,要求通过鼠标控制老鼠的移动,逃出电脑控制的猫的追捕
  • 如何C++写一个简单的小游戏

    万次阅读 多人点赞 2016-08-16 14:05:01
    作者:JustForFun ...来源:知乎 ...“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”“从我们这样一开始学C++”  这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理
  • JAVA小白的第一个游戏,猜拳

    千次阅读 多人点赞 2019-12-28 16:30:19
    一天下午无聊,突发奇想一个简单的小游戏。 下面是我的过程中思路与步骤:` /* 需求:由后台输入剪刀石头布,然后电脑随机输出一项,比较判断输赢 追加需求:可继续游戏,并当输入错误时提供重新输入 思路: 1...
  • JavaScript 实现一个 TicTacToe 游戏 —— 编程训练

    万次阅读 多人点赞 2020-10-30 08:28:45
    这里我们给大家讲讲一个好玩的编程练习,很多同学想到编程练习就会觉得与算法有关。但是往往在编程的过程中,我们要实现某种逻辑或者是功能的时候,确实是需要用到算法。
  • python做一个简单的猜拳游戏

    千次阅读 2020-09-15 22:48:07
    python编写一个简单的猜拳游戏 一.简介 这是我python编写的第一个程序,有一些局限,望大家批评指正。 二.代码 代码如下: you = int(input("请输入剪刀0,石头1,布2:")) import random cp = random.randint...
  • 学程序已经将近三年了,真正从搞项目也有大半年时间,在专业技术方面也略有所成,可今天件事情却深深的打击了我的自信心,经过了这件事,我是否真的该考虑一下是否适合程序员。 自我接触电脑以来,一直认为搞...
  • 现在2D电脑游戏什么游戏引擎开发? 除了cocos2dx和unity。 想C++开发单机游戏,直接Win32 API或者dx感觉好麻烦
  • 一个C语言写的小游戏(flappy bird)

    千次阅读 2017-03-14 17:34:40
    这是类似于手机上曾经热门的一个手机游戏,本人能力有限这两天还没搞出图像库的文件,下次争取做一个图形交互的小游戏。 这个游戏主要运用了一些简单的C语言不过有一个清屏函数和一个去除光标的函数(看不懂没关系...
  • C语言创作睿智小游戏——猜拳篇

    千次阅读 2019-10-24 21:52:38
    C语言创作睿智小游戏——猜拳篇 突发奇想,打算C语言编写一个猜拳游戏,深知网上有很多教程,未看教程,自己开始盲编, 首先需要定义猜拳游戏的精髓“石头,剪刀,布”,这里我们数字定义: //赋予1=石头,2=...
  • 1、Python猜拳小游戏代码:2、import random #导入随机模块3、4、num = 15、yin_num = 06、shu_num = 07、while num 2:12、 print('不能出大于2的值')13、 else:14、 data = ['石头', '剪刀', '布']15、 ...
  • 1小时1篇文学会python再做个飞机大战游戏

    万次阅读 多人点赞 2021-04-30 16:02:07
    作者简介 ...15-16年曾在网上直播,带领批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。系列教程将会在流量降低时转为付费位置,流量多时将不会,各位抓紧时间学习哟~
  • Python3三简单练手小游戏

    万次阅读 多人点赞 2019-03-13 21:36:58
    学Python之前我们先来几个简单的小游戏练练手,这三个小游戏一个比一个复杂,建议新手慢慢来: 1.猜拳: import random #导入随机模块 num = 1 yin_num = 0 shu_num = 0 while num &lt;= 3: if shu_num == 2 ...
  • 初识cocos creator,做一款H5小游戏

    千次阅读 2019-06-09 14:43:05
    小游戏体验。 cocos creator 前世今生。 基本开发环境的了解。 小游戏场景制作相关知识。 基础语法讲析。 sunlands-cow demo的讲解。 构建,发布。(h5, 微信小游戏小游戏体验: web 星星:...
  • pygame 开发象棋小游戏

    千次阅读 2018-05-04 16:19:57
    前段时间在平板上下载了一个游戏,但是只能和电脑玩,无法双人对战,所以这次打算就这款游戏的双人对战版 先贴一张完成的效果图: 大概的规则双方玩家轮流进行操作,可以翻牌,可以按照各棋子的特性移动或吃子...
  • 快速清理电脑多余垃圾电脑小程序 话不多说之间上步骤 1,在电脑上新建一个新建文本文档.txt 2,在文档上打上图片上的代码 3,然后打好的代码保存为bat文件格式 然后就可以这个小程序去整你的小伙伴了 ps如果找不...
  • 本文基于PyQt5可视化界面,PyQt5做个可视化的“剪刀石头布”小游戏,可以实现游戏轮次统计,双方得分、平局次数统计和重新开始功能,不管是1局决胜负,还是三局两胜、七局三胜,都能完美解决。  欢迎 大家 尝试,...
  • 小时候经常玩一个游戏,几个人把手背在后面,出石头,剪刀,布,现在身边没伙伴了,就只能跟电脑斗智斗勇了,利用random的随机数来模拟随机出拳 random.randint(1,3) -- 返回1~3之间的整数 代码如下 # 猜拳游戏 ...
  • 12岁的少年教你Python做小游戏

    千次阅读 2013-08-24 20:12:48
    在这个教程里,你要学做一个叫《兔子和獾》的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻。为了写这个游戏的代码,你将会Python。好吧,我不是指一条大蟒蛇!Python是一种计算机语言。我们在这篇教程里选择...
  • GitHub上10有趣的开源小游戏(附加在线演示)

    万次阅读 多人点赞 2019-12-08 22:20:03
    今天统计了GitHub上比较有趣的10开源小游戏,其中有许多可以称之为经典。笔者是名90后,《贪吃蛇》、《坦克大战》、《超级马里奥》和《太空侵略者》作为儿时的玩伴,陪伴笔者度过了很多时光,给笔者带来了非常多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,537
精华内容 59,014
关键字:

如何用电脑做一个小游戏