JAVA游戏编程学习笔记(一)

在看本文及后继笔记时,我们假设你有一些Java的基础:

比如你能安装JDK并配置Java程序运行的环境。了解Java编程的基础(变量、数据类型、条件及循环等基础知识),了解一些类及面向对象编程的基础,知道Java swing JFrame 等GUI类下的一些属性及方法,熟悉eclipse或NetBeans JavaIDE中的一种,还有一颗热爱游戏的心就可以了,如果基础不扎实,建议在OSC里搜索一些Java基础教程先学习一下,然后在回来看看,和笔者一起来学习Java 游戏编程吧。

我们要做的是一些很小的游戏,并不是那种大型的3D或是华丽丽的游戏,如果用Java来创建小游戏并不能引起你的兴趣,不建议你继续阅读了。


Java中的游戏窗口:

这里我们通过继承JFrame类实现。

public class GameTest01 extends JFrame {}

有了窗口,我们来初始化他:

    /**
     * 游戏窗口的初始化。
     */
    void init() {

        setBounds(100, 100, 400, 300);//设置窗口的大小及位置。
        setTitle("GameTest 窗口!");//设置窗口标题
        setVisible(true);//显示窗口
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口退出!
    }

加入main 入口:

    public static void main(String[] args) {
        new GameTest01().init();
    }

运行后效果如下:

JAVA游戏编程学习笔记(一)

JFrame 继承了一个 paint() 的方法

public void paint(Graphics g)

  • 绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。 

重写此方法即可在窗口中绘图,paint()方法中的Graphics参数 是Java中2D绘图的基类(抽象类),她能干什么?她就是我们的画笔。Graphics类,有很多方法和抽像的方法,我们来试试,方法很多,细节亲们可以看看API文档。


    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, this.getWidth(), this.getHeight());//设置背景色。
        g.setColor(Color.red);//设置画笔的颜色。
        g.fillRect(150, 150, 100, 100);//画方形
        g.setColor(Color.PINK);
        g.fillOval(10, 30, 100, 100);

    }

在GameTest01中,我们尝试重写paint()方法画几个图形试试。运行:

JAVA游戏编程学习笔记(一)


好了!大功告成!至此我们有了自己的游戏窗口,我们有了自己的画笔,下一节尝试让图形动起来,我们试试动画如何?


补充本例源码:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;

/**
 * JAVA中的游戏窗口
 *
 * 让图形动起来。
 *
 * @author J_sky
 */
public class GameTest02 extends JFrame {

    int x, y, width, height;

    /**
     * 空构造器
     */
    GameTest02() {
    }

    /**
     * 游戏窗口的初始化。
     */
    void init() {

        setBounds(100, 100, 400, 300);//设置窗口的大小及位置。
        setTitle("GameTest 窗口!");//设置窗口标题
        setVisible(true);//显示窗口
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口退出!
        draw();
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, this.getWidth(), this.getHeight());//设置背景色。
        g.setColor(Color.red);//设置画笔的颜色。
        g.fillRect(x, y, width, height);//画方形

    }

    /**
     * 动画绘制方法。
     */
    public void draw() {
        x = 50;
        y = 50;
        width = 100;
        height = 100;
        while (true) {

            if (y < this.getHeight()) {
                y = y + 1;
            } else {
                y = 0;
            }
            try {
                Thread.sleep(30);
            } catch (InterruptedException ex) {
                System.out.println(ex);
            }
 repaint();
        }
    }

    public static void main(String[] args) {
        new GameTest02().init();
    }
}


你可能感兴趣的:(java,game)