美文网首页java
java小游戏

java小游戏

作者: 心跳小鹿_3a43 | 来源:发表于2020-03-22 16:07 被阅读0次

做游戏(飞机大战笔记)

第一步:.先创建一个游戏类MyGameFrame   并继承JFrame     (需要import javax.swing.JFrame;)     继承extends

第二步:初始化窗口  launchFrame 

this.setTitle(“窗口标题”)

this.setVisible(true)    窗口关闭

this.setSize(x,y)窗口大小

this.setLLocation(x,y)  窗口位置

this.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            }

        });   关闭窗口后台还继续运行需要用此事件关闭

import java.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

第三步: 在主方法里面创建对象并调用 例:MyGameFrame f=new MyGameFrame();

        f.launchFrame();

第四步:窗口里画图形    paint(Graphicsg)

  先获取颜色:Color c=g.getColor();

在最后把颜色改回去:g.setColor(c);

先获取字体:Font f=g.getFont();

在最后把字体改回去:f.Setfont(f)

给图形加颜色:g.setColor(Color.颜色大写)

画线:g.drawLine(x1,y1,x2,y2)     

画椭圆:g.drawOval(x1,y1,长,宽)  x1,y1是指圆的外切矩形的左上角的一点

画矩形:g.drawRect(x1,y1,长,宽)

画实心的矩形:g.fillRect(x1,y1,长,宽)

修改字体:g.setFont(new Font(“字体”,字体的样式加粗,倾斜..,字体大小))

写字:g.drawString(“字”,x1,y1)

x1 y1  都是距离窗口的点

第五步:设置游戏背景  先创建一个GameUtil类

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.print.DocFlavor.URL;

public class GameUtil {

   //工具类最好将构造器私有化

    private GameUtil(){}

   public static ImagegetImage(String path) {

          BufferedImagebi=null;

          try{

                 java.net.URLu=GameUtil.class.getClassLoader().getResource(path);

                 bi=ImageIO.read(u);

          }catch(IOExceptione){

                 e.printStackTrace();

          }

          return bi;

   }

}

然后在MyGameFrame中Imageplane=GameUtil.getImage("images/plane.jpg");

在paint中画出来g.drawImage(plane, 0,

0, null);

第六步:画线程   在MyGameFrame中创建一个内部类PaintThread并继承Thread

              //帮助我们反复重画窗口!

    class PaintThread extendsThread{

        @Override

        public void run() {

            while(true){

                repaint();//重画

                try {

                   Thread.sleep(40);//1s=1000ms

                }catch (InterruptedException e) {

                   e.printStackTrace();

                }

            }

        }

    }

定义游戏物体移动的初始位置  在paint进行画图

然后在窗口类launchFrame中:new PaintThread().start();//启动重画窗口的线程

第七步:创建一个游戏物体的父类GameObiect

            把物体的属性例如:img     x y    speed     width  height

再进行画物体public  void drawself(Graphics g){

        g.drawImage(img, (int)x,(int) y, null);

    }

构造有参数的构造器:public GameObject(Image img, double x, double y, int speed, int width, int height) {

        super();

        this.img = img;

        this.x = x;

        this.y = y;

        this.speed = speed;

        this.width = width;

        this.height = height;

    }

第七步:创建一个飞机类并继承游戏物体父类:

画飞机的方法.并写出构造器;

在窗口类中写出飞机对象并在画笔方法中调用飞机类的方法;

第八步:在窗口类中定义键盘监听的内部类KeyMonitor并继承KeyAdapter

在类中右击source中的Overridezho添加按下抬起的方法并进行测试

每个按键有对应的数字

在初始化窗口中addKeyListener(new KeyMonitor()); //给窗口增加键盘监听

最后在KeyMonitor中调用按下和抬起的方法

第八步:解决闪烁问题

        首先将游戏类MyGameFrame继承的JFrame改为Frame

              在里面添加此代码

private Image offSreenImage=null;

    public void update(Graphics g){

        if(offSreenImage==null)

            offSreenImage=this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);

        GraphicsgOff=offSreenImage.getGraphics();

        paint(gOff);

        g.drawImage(offSreenImage,0,0,null);

    }

第九步: 碰撞问题

    物体都是矩形的

//飞机和炮弹的碰撞检测

    boolean peng=shells[i].getRect().intersects(plane.getRect());

            if(peng){

                plane.live=false;

            }

在此之前需要在飞机类中弄一个属性 boolean  live=true;

并在画笔方法里if(live){

画出飞机

}

第十步:创建一个爆炸类

  具体在看项目

第十一步  计时

 先定义Date startTime=new Date();

    DateendTime;

    int period;//游戏的生存时间

然后在爆炸时创建endtime=new Date()

然后画出生存时间。

相关文章

  • Java+swing版飞机大战

    Java小游戏实训——飞机大战 一、实验目的 使用Java+swing实现飞机大战小游戏 二、实验要求 1.掌握J...

  • 一个人幸运的前提,其实是他有能力改变自己

    Java小游戏阶段总结 就在昨天下午我的Java小游戏阶段终于考核了,十二三天的努力终于有了结果,顿时觉得夏日...

  • JAVA小游戏

    嗯 现在已经18:30了,今天最重要的事情也已经结束了,那就是我的小组考核。 无论结果怎么样我先说一下自...

  • java小游戏

    做游戏(飞机大战笔记) 第一步:.先创建一个游戏类MyGameFrame 并继承JFrame (需要import ...

  • Java桌球小游戏

    这个只会直行,不会转弯,看代码 下面这个是可以转弯的,会自动弹来弹去 参考:http://www.sxt.cn/J...

  • 再见Java

    在这周,可谓是终于把我的Java小游戏阶段考核完毕了,Java这个阶段走的时间是真的长,长到我想马上把Java...

  • 一颗小球的畅想

    最近学了一些 Java 的图形界面编程,因此想自己写一个小游戏试试身手,思来想去,弹球小游戏还是挺简单的,一个球拍...

  • Battleship小游戏 —— 《HeadFirst Java

  • 写Java小游戏有感

    这周开始写小游戏,前两天规划游戏和做游戏的界面,这些感觉挺容易的,但是到了后边,游戏的功能实现起来就不简单了,比如...

  • Java小游戏阶段总结

    我刚才看了看自己的每日计划,我发现我是7.27开始学习的Java,8.9做完的小游戏,总耗时14天。然后是8.23...

网友评论

    本文标题:java小游戏

    本文链接:https://www.haomeiwen.com/subject/wfdvyhtx.html