打字游戏

  • 题目:
  • 代码实现:

题目:

编写一个打字游戏,从一个面板顶端随机出现一些字母,字母按一定的时间自顶向下移动,如果字母接触到面板底端则Game Over,用户可以通过敲击键盘消除移动中的字母。

  1. 绘制出GUI界面的简易图
  2. 生成含有大小写随机字母并记录的方法
  3. 字母移动并显示的线程类
  4. 敲击键盘事件的响应方法(用于消除字母)

代码实现:

package ClickLetter;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;/*** auther:Xing* time:2019/12/12*/
public class MoveGame extends JFrame implements Runnable , KeyListener {private Random random = new Random();private Thread thread;//字母个数private final int DEFAULT_SIZE = 10;//各个值的x位置private ArrayList<Integer> x_index = new ArrayList<>();//y坐标位置private int y_index = 50;//存放String字母集private volatile ArrayList<String> numbers = new ArrayList<>();//构造函数public MoveGame() {super("打字游戏");setFont(new Font("Time New Roman",Font.BOLD,20));//启动事件监控addKeyListener(this);//初始化字母集init(DEFAULT_SIZE);//启动线程start();//设置窗体属性setSize(700, 600);setVisible(true);this.setLocation(440,330);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}//生成随机大小写字母的方法private String getNumber(){int flag = random.nextInt(2);char str = 'A';String s = "";if(flag == 0){//大写字母s += (char)(str + random.nextInt(26));}else{//小写字母//char str = 'a';s += (char)(str + random.nextInt(26)+32);}return s;}/*** 初始化字母集及字母的x坐标* @param count 字母个数*/public void init(int count){int x = 10;for(int i=0;i<count;i++) {numbers.add(getNumber());x_index.add(x);x = random.nextInt(30)+50+x;}}//开始进程private void start(){if(thread == null){thread = new Thread(this);thread.start();}}//线程@Overridepublic void run() {while(thread != null){//游戏成功if(numbers.size() == 0){stop();System.exit(0);}//游戏失败if(y_index == 600){stop();System.exit(0);}y_index += 10;//调用方法重绘界面repaint();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}//停止线程public void stop(){thread = null;}//绘图public void paint(Graphics g){Graphics2D G = (Graphics2D)g;//获取窗口大小Dimension dim = getSize();//设背景为白色g.setColor(Color.white);g.fillRect(0,0,dim.width,dim.height);//设置字体颜色g.setColor(Color.black);//画出字母for(int i=0;i<numbers.size();i++){//获取字母String ch = numbers.get(i);//获取x坐标int x = x_index.get(i);//写字母g.drawString(ch,x,y_index);}}@Overridepublic void keyTyped(KeyEvent e) {char c = e.getKeyChar();for(String str:numbers){char[] chars = str.toCharArray();char ch = chars[0];if(ch == c){numbers.remove(str);break;}}}//主函数public static void main(String[] args) {MoveGame moveGame = new MoveGame();}@Overridepublic void keyPressed(KeyEvent e) {}@Overridepublic void keyReleased(KeyEvent e) {}}

Java 实现简单打字游戏相关推荐

  1. java d打字游戏_练习--java实现的打字游戏

    [实例简介] 简单的打字游戏.分别用单线程和多线程两种方式实现,多线程没有同步. [实例截图] [核心代码] 打字游戏 └── 打字游戏 ├── bin │   └── com │   └── qsl ...

  2. Java编写网络打字游戏

    <Java语言程序设计>–郭克华 网络打字游戏功能简介   这里将介绍一个网络对战的打字游戏.首先运行服务器,界面如图1所示.                          图1    ...

  3. Pygame 简单打字游戏

    功能描述: 1.点击开始游戏,会出现一段英文文章,并进入60s倒计时 2.如果一分钟内输入完成这段会自动呈现下一段 3.单词正确数实时统计,背景颜色随输入速度而变化 代码: 注意:上面动态图需要放在游 ...

  4. html简单打字游戏,javascript实现简单打字游戏

    本文实例为大家分享了javascript打字游戏的具体代码,供大家参考,具体内容如下 传智打字游戏 .label{ position:absolute;left: 0px; } var CODE = ...

  5. html简单打字游戏,javascript实现的简单打字游戏

    传智打字游戏 .label{ position:absolute;left: 0px; } var CODE = "QWERTYUIOPASDFGHJKLZXCVBNM"; var ...

  6. 如何编辑简单打字游戏

    先来简单看一下要求 一,我们可以先编写Player类,先把属性定义好,然后进行封装 public class Player {private String name; //定义姓名private in ...

  7. JAVA实现简单扫雷游戏

    这是我第一次写博客,初衷是想把我学到的东西展示出来,通过写博客的方式再捋一遍自己的思路.希望自己的一点点想法能够给其他人启发,我也要把自己存在的问题提出来,以此文为起点,树立写博客的习惯,在之后的日子 ...

  8. Java入门简单小游戏有哪些?

    适合新手练习的小游戏有超级玛丽.愤怒的小鸟.飞机大战.五子棋.彩虹雨.聊天室.华容道.坦克大战.扫雷等.还有贪吃蛇,由Java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手锻炼自己的 ...

  9. Java实现简单扑克牌游戏

    扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦.牌的大小为从1~13.(此处为了简单,只取1 -5) ...

最新文章

  1. Vant简单H5 web app【小试牛刀】
  2. React 组件js文件中如何引入其他的js 文件数组
  3. 通讯接口:I2C和USART,SPI,CAN,USB2.0
  4. CentOS 7 学习(一) 配置LAMP和Nginx
  5. 怎样用hibernate验证登陆界面的用户名和密码
  6. 定制kali linux
  7. python与7无关的数输出格式第一行为所有与7无关的数_70 道 NumPy 测试题
  8. 50mm定焦,f1.8与1.4有什么不同?
  9. springboot-quartz普通任务与可传参任务
  10. win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
  11. iOS load和initialize方法详解
  12. Git 学习日记-01
  13. 手写数字图片数据之python读取保存、二值化、灰度化图片+opencv处理图片的方法
  14. SQL 语句中 where 条件后 写上 1=1 是什么意思!
  15. 天书奇谈3D服务端搭建架设教程Centos
  16. 大学毕业学技术学什么好
  17. [安卓开发]弹幕滚幕效果自定义View之BarrageView|支持点击事件|隐藏不滞留|颜色随机|大小速度范围随机
  18. AutoML功能解析
  19. Python 操作配置文件
  20. java 输出大于n的质数_Java 计算并打印第n个质数

热门文章

  1. PHP-mysqli_affected_rows($link);---mysqli_affected_rows() expects parameter 1 to be mysqli, object g
  2. 大连四六级百家外语培训四六级基本方法及考试技巧
  3. python keyboard hook_Keyboard Hook API函数 参数说明
  4. 6种有效的iOS团队开发技巧
  5. 使用Unity Tilemap轻松制作2D瓦片地图-基础篇
  6. gcc:内存问题检查选项 -fsanitize; asan
  7. ORACLE按照汉字拼音、笔划、部首排序。
  8. C语言中的位操作、与、或、非、异或
  9. Hanginthere
  10. InstallShield2015LimitedEdition 增加 Redistributables VS2013 vcredist