哇!!终于把 开汽车 做出来了!拿出来秀一下~~

来源:互联网 发布:海星达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);
        }
}
 

原创粉丝点击