用java做坦克游戏

2024-05-01

用java做坦克游戏(精选3篇)

篇1:用java做坦克游戏

第一次课

一、要做的工作

1、产生一个800*600的窗口,背景色为绿色。窗口可以被关闭,但不允许改变大小

2、在窗口里画出一个红色的圆代表坦克

3、让坦克动起来

改变坦克的位置就相当于坦克移动了,因此首先需要把坦克的位置描述改为变量

每重画一次坦克就动一次,让坦克不断的动就要不断的重画,我们用线程来控制

二、知识点

1、使用eclipse建立项目,创建包和类的方法

2、变量命名规则:所有命名要求见名知义;类名首字母大小,变量和方法首字母小写;驼峰标识(比如类名:TankWar)

3、事件机制

 事件包括三个方面:监听器类,注册事件,覆盖方法

 监听器类经常写成内部类(包括匿名内部类)或是类本身实现事件接口  事件接口包括actionListener接口、窗口事件接口、鼠标事件接口、键盘事件接口等等  使用事件接口要求把接口的所有方法都写出,但不一定都实现  窗口事件和鼠标键盘事件接口还提供了较为简洁的适配器类

3、匿名内部类 类可以分为如下几种:  主类:包含主方法的类

 内部类:在一个类内部定义的类为内部类

 实例内部类:在一个类内部独立存在,不属于类的成员变量和方法  静态内部类:用static修饰的实例内部类  局部内部类:在一个类的方法内定义的类  匿名内部类:没有名字的局部内部类

 外部类:包含内部类的类,外部类也可能是其他类的内部类  顶层类:不是任何类的内部类为顶层类 设计内部类的主要目标是“封装”。

 顶层类只能用public修饰或者不修饰(即默认修饰方式),内部类可以用public,protected,private,默认四种方式修饰,局部内部类只能用默认修饰  局部内部类和匿名内部类只在方法内可见,即该类只为该方法提供服务  实例内部类只在一个类内可见,只为该类提供服务

4、利用eclipse重写父类的方法

在eclipse中单击右键,源代码,生成覆盖方法。此时会列出当前类的所有父类,当前类可以直接继承父类的方法。

5、图形的重画机制

在frame上画出的图形每次刷新时会重画,重画的过程是:系统自动调用repaint方法,repaint调用update方法,update调用paint方法,从而完成重画。

6、多线程

见第17课详细讲解

三、小注

1、我们使用的Frame组件,没有使用JFrame,因为JFrame在后续画图时不好用,到时举例看

第二次课

一、要做的工作

1、让坦克在键盘的控制下向四个方向移动

2、我们已经写好一个坦克并且能够控制其移动,如果要求在加入一个坦克该如何实现?

把坦克做成一个独立的类,把和坦克自身相关的属性和方法都写到坦克类中,然后在tankclient类中生成tank类的对象,然后用tanke类的对象调用坦克类的方法类完成各种功能

3、让坦克在键盘的控制下向八个方向移动

1、如何做出八个方向?通过四个方向键组合出八个方向,比如上、右同时按下是一个方向。

2、四个布尔变量代表四个方向键的按下情况,组合出八个方向,八个方向用枚举类型表示。

4、优化代码:把一些可能会改变的值定义成常量

二、知识点

1、键盘事件适配器

键盘控制坦克移动就要使用键盘事件,事件三要素:监听器类(监听接口还是适配器类?写成内部类还是匿名内部类?),注册事件,覆盖方法(keypress,keytyped,keyreleased用哪个方法)

2、键盘代码

如何获取键盘按键代码:e.getKeyCode()

3、Switch语句:格式,case后能跟什么样的变量?没有break会怎样?

4、加入键盘事件后可否去掉多线程?

5、面向对象编程思想:一切皆为对象。对项目进行抽象,形成若干个类,然后生成对象来实现程序功能

把坦克抽象成一个类,把坦克的属性描述为成员变量,把坦克的行为描述为方法。这样就把坦克相关的属性和方法都封装到一个类中,属性一般设计为私有,通过set和get方法访问,方法一般为public,供对象调用,从而实现各种功能。

6、构造方法

构造方法用来描述一个对象刚生成时的状态。调用构造方法才能生成对象。一个类必须有构造方法,构造方法有三种情况  super(xxx): 第一句调用父类的构造方法  this(xxx):

第一句调用本类的其他构造方法

 super():

第一句没有调用任何其他的构造方法,系统会自动加上这句,去调用父类的无参构造方法(如果父类没有无参构造方法,那么子类会出错)任何一个构造方法必然属于上述三者之一。任何一个类都必须提供一个空的构造方法

7、枚举类型

Tiger 中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。

Java 代码的两个基本的构造块是类 和接口。现在 Tiger 又引入了枚举,一般简称它为 enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配 定义枚举

enum Direction{U,D,R,L,RU,RD,LU,LD,STOP};在这里,我使用了新的关键字 enum,为 enum 提供了一个名称,并指定了允许的值。然后,Direction就变成了一个枚举类型,使用枚举类型

private Direction direction = Direction.STOP;用以前定义过的类型(Direction)建立一个新的枚举(direction)之后,您就可以像使用其他成员变量一样使用它了。当然,枚举只能分配枚举值中的一个(例如,U,D,R等)

三、小注

1、注意把坦克做成类后,程序的改变。

第三次课

一、要做的工作

1、添加子弹类

a)新建一个Missile类作为子弹类 b)设计子弹类的属性和方法 c)要求子弹能够根据某个方向移动 d)在主类中画出一个子弹,进行测试

2、要求按下ctrl键让坦克打出子弹,并且让子弹沿着坦克移动的方向运动

a)在坦克的keyPress方法中加入ctrl键响应,产生一颗子弹。写一个attack方法,在此处生成一个Missile对象。在ctrl响应中调用该方法

问题:上述方案无法打出子弹,因为没有画出子弹,两个地方可以调用draw方法画出子弹,tank类里的paint方法,tankwar1里的paint方法。我们在tanjwar1里做,因为尽量把所有对象都定义到tankwar1里,这样好管理。

b)在tankwar1中定义一个子弹对象,在tank中生成子弹对象,那么如何把tank中的子弹对象传递到tankwar1中。让tank持有tankwar1的对象。c)子弹从坦克中心打出

3、坦克停止时也能打出子弹

a)给坦克增加一个属性ptDir,炮筒属性 b)炮筒用一条直线来表示

c)每次move后,根据坦克方向确定炮筒方向

二、知识点

1、枚举类型的用法

a)在Tank中我们定义了一个枚举类型Direction,在Missile中我们用该类型定义个变量dir,该变量是一个枚举类型变量,可取Direction枚举类型中列举的常量之一。b)在TankWar1中我们直接使用了枚举类型Direction的一个常量

2、三、小注

篇2:JAVA游戏也用中文名

其实,JAVA程序的名称和图标都是在*.jar文件包内meta-inf文件夹下,一个名为menifest.mf文件中来定义的。也就是说,我们通过修改menifest.mf文件的内容,就可以自定义JAVA程序的名称。

1建立中文名称

下载UltraEdit软件,地址是http://www.onlinedown.net/soft/7752.htm,快车代码:CF0803SZKW01。打开UltraEdit,选择“新建文件”,输入一个将要更改的JAVA程序中文名称,并在Ultraedit文件下拉菜单中的格式转换内,选择UNICODE/ASCII/UTF-8 转UTF-8(ASCII编辑),然后随意取个名称存盘关闭文件。

2解压*.Jar文件

使用Winrar(下载地址:http://www.newhua.com/soft/5.htm,快车代码:CF0803SZKW02)打开要被修改的JAVA程序,将其解压缩到任意一个目录内。

3修改menifest.mf

再次开启UltraEdit,选择打开menifest.mf文件,找到“MIDlet-Name:***”和“MIDlet-1: ***, /icon.png, classmain”两个字段,***代表JAVA程序的名称,将其修改为中文名,注意两个字段内的名称要保持一致。

4合并替换

用UltraEdit打开开始存盘的文件,利用修改的那串字符替换menifest.mf文件中“***”名称部分,存盘退出。

5压缩生成

篇3:碰碰:用游戏做社交

去年12月中旬,刚刚上线6个月的碰碰就宣布完成了B轮融资,总额度达1700万美元。而根据碰碰方面提供的数据,目前这款交友App的用户数量已经突破了600万。

如何想到这个主意?

在创业之前,田行智曾是Zynga的中国区负责人。这家主打社交游戏的公司以向Facebook、MySpace提供网页游戏并通过出售虚拟物品赚钱为盈利模式。在Facebook游戏的前十名中,Zynga出品曾经能够占据6个名额。而另外一位创始人欧阳云则出身腾讯,之前曾担任过高朋的首席运营官和腾讯战略部副总经理职位。

2013年6月,田行智从Zynga离职准备创业,方向则为他一直看好的移动社交。在微信、陌陌各占山头的大环境下,田行智却更愿意把移动社交看作一个蓝海市场。在他看来,社交更像是年轻群体的硬性需求,在生活圈子相对封闭、暂无生活压力的校园中,年轻人对社交会更有热情,相对地,对结识陌生人的防备性也比较低。因此在微信和陌陌的用户群体逐渐成型之后,田行智更愿意相信,在逐渐成长起来的年轻人群体中,还存在一块通用型(相对垂直社交而言)的社交产品。

因此他想做一款针对15岁—25岁之间年轻人的社交产品,又因为之前一直在做社交小游戏的缘故,就构成了碰碰最初的形态:把轻度游戏带入到社交行为中。

创新点在哪儿?

碰碰早期用户的获得,主要依靠一款名为“你懂我吗”的互动游戏。这款由碰碰开发的小游戏鼓励用户和好友互动:用户可以通过回答碰碰随机提出的几道问题来生成一份和自己喜好相关的简单问卷,经由微信分享到朋友圈之后,就可以邀请微信好友来回答这些问题,然后系统再通过计算好友和用户答案的匹配度来判断好友对用户的了解程度。

据田行智介绍,早期依靠这款游戏带来的新增用户达到了百万左右,而现在,碰碰上面的测试题型有十几种,已经建立了一个包含近万道题的测试题库。

这种测试题存在的目的是尽量减少社交过程中的“生硬感”。碰碰上的社交关系主要分为两种:熟人关系和陌生人关系。

在熟人方面,碰碰支持导入通讯录关系。从女生的角度来讲(热衷于这种测试的也多为女生),既可以和姐妹团玩,还可以和暧昧对象或者男朋友做测试。

而碰碰在陌生人社交方面主要是基于LBS和最近动态两个维度。当用户注册碰碰的账号之后,几乎在上面所有的互动状态都会被自动发布到主页面的广场,就像游戏里的广播大厅。因为鼓励用户上传自己的真实头像,所以很方便和看上头像的人搭讪。

而碰碰所谓的“搭讪”也比较委婉,就是邀请对方玩游戏,比如性格测试、“你的初恋对你死心了没”之类。不过玩游戏还只是第一步,双方通过游戏互动三次才能成为好友,进而才能进行聊天等社交行为。田行智对这项机制的解释是“为了减轻女性在陌生人社交过程中的心理压力”。

之后的计划?

在发展早期,碰碰上就设置有一些类似于聊天机器人的账号。这些名为“碰碰机器人”的卡通人物账号在新人入驻时能够起到一定的“暖场”作用,比如刚注册时没有好友或者无人来搭讪,这些机器人就可以在邀请新人玩游戏的过程中带领对方熟悉社区规则、感受游戏乐趣。

在接下来,这些机器人还将起到的作用是记录用户的行为数据:每次互动的情况、测试题的喜好和选项等。再结合用户和别人互动的信息,田行智计划接下来在碰碰推出一项类似于“个人图谱”的功能,用数据图的方式呈现每个人的性格特点、偏向喜好等,再以此为基础进行更深一步的社交匹配,比如给用户推送更符合他们的兴趣的异性用户来让双方进行互动等。

商业化的部分碰碰目前还没有尝试,不过目前产品中有一些需要积分兑换的“聊天气泡”“表情商店”等以后可能成为付费项的商城设置。据田行智介绍,之后类似于个性化装扮、VIP权限等也都会成为可能的收入来源。

上一篇:夏日风景优秀作文900字下一篇:比选结果通知书