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

实现打字母的游戏

这次这个案例能够说是头几次所讲的内容的一个技术汇总,主要是 运用了几大块的知识。我们先来定义一下案例的背景:在一个300*400的窗口上。有10个随机产生的字母下落,在键盘上敲击字母,若是敲对了就消掉。初始化的成绩为1000分,每次敲对一个字母就加上10分,假设在字母落到了屏幕的下方还没有敲对的话则判定为失败,就扣除100分。

我们还是老样子。先来进行步骤的划分

1.做满天星

2.把星星改成随机的10个字母

3.让字母落下,假设字母落出了屏幕就生成新的字母,并从屏幕的上方又一次出现

4.接收键盘输入并消除匹配的字母

5.实现积分程序

6.临时先不说吧。先把第六步完毕了。自然而然就能看到这一步须要什么了

## **1.做满天星** ##

如今做的星星,有些条件有所改变,须要一个300*400的窗口,须要10颗星星。如今大家先自己写一遍代码,随后再看看我的代码

import java.awt.*;

public class MyChar {

public static void main(String[] args) {

// TODO Auto-generated method stub

Frame w = new Frame();

w.setSize(300, 400);

MyPanel mp = new MyPanel();

w.add(mp);

w.show();

}

}

class MyPanel extends Panel

{

public void paint(Graphics g)

{

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

{

g.drawString("*", (int)(Math.random()*300), (int)(Math.random()*300));

}

}

}

这里有几个地方须要注意一下。窗口的背景不再是黑色的,那么字体的颜色也不用再设置成白色的了,黑色的部分可能是个意外,为什么在纵坐标上我们不乘上400?这个问题肯定非常多人都会想到,这里我来告诉各位,你想想我们的终于目的是让字母下落。等着用户看到键盘上相应的键。假设乘上400。就有可能有些字母一出来就在屏幕的最下方,这貌似并不符合我们设计的游戏的逻辑。

其实,我们前面的经验表明,假设乘上400。有些字母一出现可能会由于数值太大而看不见。

2.把星星改成随机的10个字母

第二步是生成10个随机字母,我们索性将这些在这一步将坐标放到数组变量里,以便准备给下落动作使用。

问题是,随机的字母怎样产生?我们从未讲过数据类型,我认为一上来就介绍8中基本数据类型毫无意义,假设没实用到就会非常快的忘记,回想一下我们已经使用的数据类型都有什么。

毫无疑问。第一个想到的就是int,整数类型(简称整型),这是眼下为止我们使用最多的数据类型。既然有整型那么就一定有小数型,在非常多语言里都有两张表达小护士的数据类型,一个float。另一个是double。看到单词我们就能知道个大概,double是两个的意思。这是由计算机的特点决定的。double用的两倍的空间来存储数据,所以能够想象的到double能够表示很多其它的数字,详细到小数来看,结果就是更加的精确。可是也就更加的浪费资源。其实,整型也有short和long之分,这个也非常好理解。从字面上去解释。short就是短的意思,相应的就是短整型,long是长的意思。相应的就是长整型,两者的差别就是表示的整型数据的长度不同,short int所表示的数据范围是 —32768to+32767。long int 表示的是-2,147,483,648 to 2,147,483,647 这样一来就非常直观了嘛,long所表示的范围比short大的多得多

言归正传,另外,我们还用到了boolean类型,你说我没讲到boolean,其实我们在if或者循环里用做条件的表达式结果,boolean简单。里面就两个可能的值:true or false。

另一个是byte类型,由于计算机是用0和1最为主要的运算单位的,可是表达的东西太少了。所以人们将0和1组成一个组来存放稍大一点的数。8个二进制数组合起来就是一个byte,这成为编程中最经常使用的基本数值单位。

介绍到我们关注的一个数据类型,即char。

char是字符类型。就是放字符的。字符用单引號引起来。比方'a',这个我们没实用过。之前用双引號"*"不算。由于这是字符串String。这个String不放在数据类型里讨论。String是对象不是基本数据类型,这句话意味着这里讨论的数据类型不是对象,你可能认为不是就不是呗,可是从学术的角度或者一直面向对象的程序猿看来,就难以适应了,有人抨击Java不是纯粹的面向对象语言,指的就是8中基本数据类型不是对象,从程序猿的角度来看,不是对象意味着点点不会出现方法。有的时候这是个问题,为什么Java的设计者不能再纯粹一点呢?这是有原因的,设计者们看的非常深非常远,从效率的角度考虑,基本数据类型的操作比对象更有效率,只是为了照应面向对象程序猿,Java提供了基本数据类型的封装类,帮助我们在须要的时候将这个数变成对象。

为什么要搞这么多的数据类型呢?一是为了更好的使用内存,声明变量的时候假设指定了这个变量是boolean类型的。程序就不用为这个变量准备int类型那么大的空间了。而是不同数据类型之间的运算规则又是不同的。我们来看以下两个程序的运算结果。

public class MyTest {

public static void main(String[]args){

char a='1';

char b='2';

System.out.println(a+b);

}

}

执行一下你会发现得到了一个意想不到的数字99,再看看以下这段类似的代码

public class MyTest {

public static void main(String[]args){

char a=1;

char b=2;

System.out.println(a+b);

}

}

这段代码我想就算不同意也能够猜出结果是3了,为什么会有这种差异,留给各位以后去探索吧

既然有不同的数据

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值