JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--技术新闻--缓存区  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
是男人就撑过20秒游戏的实现
作者:     文章来源:
访问次数:1次     加入时间:2005年01月01日
这个游戏大部分人都玩过,界面相当简单,主要就是子弹类,还有飞机类,然后再就是把子弹和飞机加到一个Canvas当中去,然后Canvas添加到JFrame中。

class Ball implements Runnable{                        //子弹类

        private int                 X,Y;
        private int                 moveX,moveY;

        private int                 width,height;

        private int                  rX,rY;
        private int                 rMoveX,rMoveY;

        private BallCanvas        canvas;

        private Thread                newThread;

        public Ball(BallCanvas can){
                width        =can.getWidth();                //得到画图区的宽
                height        =can.getHeight();        //得到画图区的高

                rX                =(int)(height*Math.random());
                rY                =(int)(width*Math.random());
                rMoveX        =(int)(40*Math.random());
                rMoveY        =(int)(40*Math.random());
                X                =rX;                                        //球的起始点坐标
                Y                =rY;                                        //球的起始点坐标

                moveX        =rMoveX;                                        //球位移的距离
                moveY        =rMoveY;                                        //球位移的距离

                canvas        =can;                                //画图时用

                newThread=new Thread(this);
                newThread.start();
        }
        public void run(){
                while(newThread!=null){

                        canvas.repaint();

                        try{
                                Thread.sleep(50);
                        }
                        catch(InterruptedException e){}

                        X=X+moveX;
                        Y=Y+moveY;

                        if(X<=0){
                                X=0;
                                moveX=-moveX;
                        }
                        if(X>=(width-30)){
                                X=width-30;
                                moveX=-moveX;
                        }
                        if(Y<=0){
                                Y=0;
                                moveY=-moveY;
                        }
                        if(Y>=(height-30)){
                                Y=height-30;
                                moveY=-moveY;
                        }
                }
        }
        public void draw(Graphics g){
                g.setColor(Color.black);
                g.fillOval(X,Y,5,5);
        }
}


这个类主要是实现子弹的一些功能,子弹在天上非,其中一个子弹一个线程,
飞机类主要是实现自己控制小飞机的飞行,通过从Canvas中接受到键盘事件来控制飞机的移动,

class Air {                //飞机类
        private int                 X,Y;                                //飞机的坐标
        private int                        width,height;                //飞机可以飞到的区域

        private BallCanvas         canvas;                                //画图用

        //private Thread                 newThread;                        //飞机线程
        public Air(BallCanvas can){
                width                =300;
                height                =400;
                X                        =width/2;
                Y                        =height/2;

                canvas                =can;
        }

        public void moveUp(){
                this.Y-=10;
                if(Y<=0)Y=0;
        }
        public void moveDown(){
                this.Y+=10;
                if(Y>=height)Y=height-5;
        }
        public void moveRight(){
                this.X+=10;
                if(X>=width)X=width-5;
        }
        public void moveLeft(){
                this.X-=10;
                if(X<=0)X=0;
        }

        public void draw(Graphics g){
                g.setColor(Color.red);
                g.fillOval(X,Y,5,5);
        }
}


最后就是Canvas类实现KeyListener接口,并且paint方法画图
        public void paint(Graphics g){
                air.draw(g);
                for(int i=0;i<balls.length;i++){
                        balls[i].draw(g);
                }
        }
        public void keyPressed(KeyEvent e){

                switch(e.getKeyCode()){
                        case KeyEvent.VK_UP:
                                air.moveUp();
                                repaint();
                                break;
                        case KeyEvent.VK_DOWN:
                                air.moveDown();
                                repaint();
                                break;
                        case KeyEvent.VK_RIGHT:
                                air.moveRight();
                                repaint();
                                break;
                        case KeyEvent.VK_LEFT:
                                air.moveLeft();
                                repaint();
                                break;
                }
        }


整个游戏的实现过程大概就是这样的,但是还有些地方没实现,子弹和飞机相遇的判断函数没写,没写过这方面的东西,希望大家给点指示,谢谢。
JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号