哇!!终于把 开汽车 做出来了!拿出来秀一下~~
来源:互联网 发布:海星达gps数据怎么导出 编辑:程序博客网 时间:2024/05/15 10:13
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Car implements Runnable,KeyListener {
/**这个游戏有4辆敌车*/
// DrawSquare car[] = new DrawSquare[4];
Cars car[] = new Cars[4];
/**主控制车*/
DrawSquare carMain;
/**敌车的出现位置<li>初始化时赋值为 50</li>*/
int itStartLine;
/**敌车的长度<li>为 Friendly 型,可以进行修改</li><li>车的长度在游戏初始化时自动赋值为40</li>*/
int itCarH;
/**敌车的宽度<li>为 Friendly 型,可以进行修改</li><li>车的宽度在游戏初始化时自动赋值为20</li>*/
int itCarW;
/**每辆敌车都有一个线程负责<li>线程的停顿时间为 300 毫秒</li>*/
Thread tdCar[] = new Thread[4];
/**每辆敌车的速度都可以调节<li>为 Friendly 型</li>*/
private int itSpeed[] = new int[4];
/**每辆敌车的某个时刻的坐标<li>[车的编号][0] :车的X坐标</li><li>[车的编号][1] 车的Y坐标</li>*/
private Point postion[] = new Point[4];
/**主控制车的坐标*/
private Point pMain;
/**车道的宽度*/
int itLoadWidth;
/**车道的车辆数<li>在屏幕上,一个车道最多只能有2辆车</li>*/
int itCarsOnLoad[] = new int[4];
/**使用工具包中的 MainFrame 类,生成一个窗体<li>用了重构,在初始化时设定了窗口的大小和坐标</li>*/
MainFrame mf;
public static void main(String args[]){
new Car();
}
Car(){
Init();
}
/**初始化游戏的界面*/
public void Init(){
itStartLine = 50;
itCarH = 40;
itCarW = 20;
itLoadWidth = 100;
itSpeed[0] = 10;
itSpeed[1] = 20;
itSpeed[2] = 25;
itSpeed[3] = 30;
mf = new MainFrame(100,100,600,600);
mf.setLayout(null);
carMain = new DrawSquare(itCarW,itCarH);
mf.add(carMain);
pMain = new Point();
pMain.x = 300;
pMain.y = 500;
carMain.setLocation(pMain);
mf.addKeyListener(this);
for(int i=0;i<4;i++){
car = new Cars(itCarW,itCarH);
// car = new DrawSquare(itCarW,itCarH);
mf.add(car);
postion = new Point();
postion.x = i*itLoadWidth+1;
postion.y = itStartLine;
car.setLocation(postion);
tdCar = new Thread(this);
tdCar.start();
}
}
public void run(){
while(true){
for(int i=0;i<4;i++){
if(Thread.currentThread()==tdCar){
postion.y += itSpeed;
if(postion.y>=600){
// itCarsOnLoad[]
postion.y = itStartLine;
int loadNum = (int) Math.round(Math.random()*4);
postion.x = itLoadWidth*loadNum;
}
if(Math.abs((postion.x-pMain.x))<=50&&Math.abs((postion.y-pMain.y))<=50){
System.exit(0);
}
car.setLocation(postion);
try {
tdCar.sleep(50);
} catch (InterruptedException e) {
}
}
}
}
}
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_UP&&pMain.y>300){
pMain.y -= itLoadWidth;
carMain.setLocation(pMain);
}
if(e.getKeyCode()==KeyEvent.VK_DOWN&&pMain.y<500){
pMain.y += itLoadWidth;
carMain.setLocation(pMain);
}
if(e.getKeyCode()==KeyEvent.VK_LEFT&&pMain.x>0){
pMain.x -= itLoadWidth;
carMain.setLocation(pMain);
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT&&pMain.x<400){
pMain.x += itLoadWidth;
carMain.setLocation(pMain);
}
if(e.getKeyCode()==KeyEvent.VK_S){
for(int i=0;i<4;i++){
itSpeed *=1.5;
}
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
/**汽车的类<li>继承自 DrawSquare ,车宽,车长</li>*/
class Cars extends DrawSquare{
/**车所在的车道<li>由于游戏升级问题,该版本没有使用 车道 </li><li>在游戏 Car_2 即版本2中使用了</li>*/
int LoadsNum;
Cars(int w,int h){
this.sqWidth = w;
this.sqHeight = h;
this.InitSize();
}
}
/**
* 生成一个画布,画布里面有一个正方形
* */
class DrawSquare extends Canvas{
/**
* 长方形的 高
* <li>默认的值是 10</li>
* */
public int sqHeight = 10;
/**
* 长方形的 宽
* <li>默认的值是 10</li>
* */
public int sqWidth = 10;
/**
* 构造方法
* */
DrawSquare(){
setSize(this.sqWidth*2,this.sqHeight*2);
// setSize(40,40);
}
public void InitSize(){
setSize(this.sqWidth*2,this.sqHeight*2);
}
public void paint(Graphics g){
g.drawRect(0,0,sqWidth,sqHeight);
// g.drawRect(0,0,20,20);
}
DrawSquare(int w,int h){
this.sqHeight = h;
this.sqWidth = w;
setSize(this.sqWidth*2,this.sqHeight*2);
// setSize(40,40);
}
}
- 哇!!终于把 开汽车 做出来了!拿出来秀一下~~
- 一个星期,终于做出来了
- MTK昨天把窗口做出来了
- 很老的帖子了,拿出来温习一下~~ ^-^
- 钱箱坏了,要把钱拿出来怎么处理?
- 遥控车的主板终于做出来了!!
- 今天,终于做出一辆遥控车来了!!
- 合并排序 MergeSort, 终于自己做出来了
- HDU:汉诺塔VII 终于做出来了!
- 今天终于沉下心来,把SSH环境搭建的课件做了一下。
- 终于把SIP搭起来了
- 今天终于把perl写出来了
- 上週末去南投玩了一下,順便拍了几张,拿出来和大家分享
- 终于用horspool算法把题目做出来了,可惜那个系统却说超时了,真想不能,有这么好的算法,还超时。
- 小伎俩又拿出来骗人了
- Interleaving String 一个月前没做出来的题目,闷了三天终于闷出来了
- FireFox 终于来了?
- 雪终于来了
- 贪吃蛇 垃圾版 已经完成~~~耶~~~拿出来秀秀
- Windows API一日一练(57)CopyFile和MoveFile函数
- 在VS2008使用ReportView出现错误
- LUA资源网站
- ASP.NET缓存:方法和最佳实践
- 哇!!终于把 开汽车 做出来了!拿出来秀一下~~
- 调侃厦门
- Eclipse快捷键
- 程序员面试题精选(31):从尾到头遍历链表
- div布局的一些特性
- 走近TCP/IP协议
- 用java实现单位的跟踪 , 稍加升级就可以实现两个单位的动态跟随
- gantt(甘特)图
- 使用存储过程检测用户名是否存在