练习.打字母游戏

  1 package com.java7.mychar.main;
  2 import java.awt.Color;
  3 import java.awt.Frame;
  4 import java.awt.Graphics;
  5 import java.awt.Panel;
  6 import java.awt.event.KeyEvent;
  7 import java.awt.event.KeyListener;
  8 import javax.swing.JFrame;
  9 import javax.swing.JPanel;
 10
 11 public class MyChar {
 12     public static void main(String[] args) {
 13         JFrame w = new JFrame();
 14         w.setSize(600, 800);
 15
 16         MyPanel mp = new MyPanel();
 17         w.add(mp);
 18
 19         Thread t = new Thread(mp);
 20         t.start();
 21
 22         w.addKeyListener(mp);
 23         mp.addKeyListener(mp);
 24
 25         w.setVisible(true);
 26     }
 27 }
 28
 29 class MyPanel extends JPanel implements Runnable , KeyListener {
 30     int x[] = new int[10];
 31     int y[] = new int[10];
 32     char c[] = new char[10];
 33     int score = 1000;
 34     // structure method
 35     MyPanel() {
 36         for(int i = 0; i < 10; i++) {
 37             x[i] = (int)(Math.random() * 580);
 38             y[i] = (int)(Math.random() * 600);
 39             c[i] = (char)(Math.random() * 26 + 97);
 40         }
 41     }
 42     public void paint(Graphics g) {
 43         super.paint(g);
 44         for(int i = 0; i < 10; i++) {
 45             g.setColor(Color.BLUE);
 46             g.drawString(new Character(c[i]).toString(), x[i], y[i]);
 47         }
 48         g.setColor(Color.RED);
 49         g.drawString("你的成绩是:" + score, 5, 15);
 50     }
 51     // 利用线程的repaint方法,让字母由上至下滑落
 52     public void run() {
 53         while(true) {
 54             for(int i = 0; i < 10; i++) {
 55                 y[i]++;
 56                 // 如字母滑到底部没有被消除,则重新回到顶部生成随机字母,并扣100分
 57                 if(y[i] > 700) {
 58                     y[i] = 0;
 59                     x[i] = (int)(Math.random() * 550);
 60                     c[i] = (char)(Math.random() * 26 + 97);
 61                     score -= 100;
 62                 }
 63             }
 64             try {
 65                 Thread.sleep(30);
 66             } catch(Exception e) {
 67
 68             }
 69             repaint();
 70         }
 71     }
 72     @Override
 73     public void keyPressed(KeyEvent arg0) {
 74         // 将用户输入的字符存入keyC中
 75         char keyC = arg0.getKeyChar();
 76         int nowY = -1;
 77         int nowIndex = -1;
 78         // 扫描整个数组,看有没有匹配的字符
 79         for(int i = 0; i < 10; i++) {
 80             if(keyC == c[i]) { // 如果匹配(可能同时匹配多个)
 81                 if(y[i] > nowY) { // 从0-9扫描索引,寻找最大的y坐标
 82                     // 若发现更大的y坐标,则将该坐标值赋给nowY,直至nowY => y[i]
 83                     nowY = y[i];
 84                     nowIndex = i;
 85                 }
 86             }
 87         }
 88         // 消除最底下的匹配字母并从顶部重新生成随机字母
 89         if(nowIndex != -1) {
 90             y[nowIndex] = 0;
 91             x[nowIndex] = (int)(Math.random() * 580);
 92             c[nowIndex] = (char)(Math.random() * 26 + 97);
 93             score += 10;
 94         } else { //
 95                 score -= 100;
 96             }
 97     }
 98     @Override
 99     public void keyTyped(KeyEvent e) {
100         // TODO Auto-generated method stub
101
102     }
103     @Override
104     public void keyReleased(KeyEvent e) {
105         // TODO Auto-generated method stub
106
107     }
108 }
时间: 2024-08-02 10:51:13

练习.打字母游戏的相关文章

字母游戏

[问题描写叙述] peter喜欢玩字母游戏,于是他编写了一个有趣的游戏.游戏规则是在一个 (N-1) * N的表格里填写字母.规则:对于每一个输入的N,由 (N-1) * N的字母区域的左上角開始,从字母A開始逆时针填充一个字母区域,乘积若超过26继续由新一组的A.B.C??填充,不要求输出边框. [输入] 多组測试数据(数据量在100组以内). 每组測试数据仅仅有一行为一个整数N(1<=N<=30).表示表格的宽度. [输出] 对于每组输入数据.输出N-1行,为填完的表格(N-1行,每行N个

猜字母游戏

猜字母游戏 猜字母游戏——设计数据结构 猜字母游戏——设计程序结构 猜字母游戏——实现字母生成方法 猜字母游戏——实现字母检测方法 猜字母游戏——实现主方法 1 猜字母游戏——设计数据结构 1.1 问题 有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统提示结果.如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出:如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提

JSP简单练习-猜字母游戏

<!-- guessCharExample.jsp --> <%@ page contentType="text/html; charset=gb2312" %> <html> <head> <title>猜字母游戏</title> </head> <body> 下面,我们一起来玩一个游戏:猜字母游戏<br> 游戏规则:电脑会随机自动生成一个字母,请你猜出这个字母是什么.字母忽略

字母游戏(搜索)

问题 S: [搜索]字母游戏 时间限制: 10 Sec  内存限制: 64 MB提交: 28  解决: 17[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 一种单人玩的游戏,规则为: 在一个R行C列的方格上,每个方格中有一个A-Z的字母.游戏从左上角(第一行,第一列)位置开始,一步一步地向相邻(上.下.左.右)方格移动.唯一的限制是路径上的方格中的字母,每种字母只能出现1次. 游戏的目标是走尽可能长的路径.请你写程序算出指定棋盘上,可能走的最长步数. 输入 第1行两个整数R和C(

从零开始学C语言,200行代码完成一个打字母游戏!

很多刚开始学习编程的同学都希望自己可以去开发一些游戏,当学习了c语言的时候却发现总是用c语言去解决一些数学问题,今天我就分享给大家一个我学习c语言时候学到的一些好玩的东西,希望可以帮助大家保持对编程的兴趣. 创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习

Java实现猜字母游戏

package day06; import java.util.Scanner; public class HomeWork { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = "GuessingGame"; System.out.println(string+"欢迎尝试猜字谜游戏!满分500分,最低分为0分!");

华为机试题【13】-wave数组找字母游戏

题目描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f. 但现在你的任务可没有这么简单,你现在处于一个迷宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物. ,指定W为"SOLO",则在地图中红色标注了单词"SOLO". 注意区分英文字母大小写,你只能上下左右行走. 运行时间限制: 无限制 内存限制: 无限制 输

Java图形界面实战案例——实现打字母游戏

实现打字母的游戏 这次这个案例可以说是头几次所讲的内容的一个技术汇总,主要是 运用了几大块的知识.我们先来定义一下案例的背景:在一个300*400的窗体上,有10个随机产生的字母下落,在键盘上敲击字母,若是敲对了就消掉,初始化的成绩为1000分,每次敲对一个字母就加上10分,如果在字母落到了屏幕的下方还没有敲对的话则判定为失败,就扣除100分. 我们还是老样子,先来进行步骤的划分 1.做满天星 2.把星星改成随机的10个字母 3.让字母落下,如果字母落出了屏幕就生成新的字母,并从屏幕的上方重新出

C++第十一课:面向对象[敲字母游戏]

小编前面讲解的知识只是最基本的C语言部分,代码很乱也很臃肿,很难看,如果没有基础的朋友就有可能看不懂. 下面就正式融入C++面向对象的理念,让代码变得更加通俗易懂,逐步带入高逼格的操作. 总体来说,代码部分没怎么变化过,只是加入类的运用: 1.想要加入类的知识,我们首先得学会分析全程,这里需要什么对象? 2.其次,分析代码的构成,怎样才能让代码变得更清晰,一目明了. 3.每个人都有一套自己的代码思维,最后剥析面向对象的样式,不至于以后还是使用c语言的代码构成一个程序. 既然是游戏,就应该有一个地