文档章节

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

J_sky
 J_sky
发布于 2015/11/01 21:39
字数 872
阅读 232
收藏 0

在看本文及后继笔记时,我们假设你有一些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();
    }

运行后效果如下:

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()方法画几个图形试试。运行:


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


补充本例源码:

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();
    }
}


© 著作权归作者所有

J_sky

J_sky

粉丝 18
博文 25
码字总数 12709
作品 3
朝阳
程序员
私信 提问
给大家分享一个JAVA技术大牛的课程笔记

目前,Java语言已经广泛应用于生活中的各个领域,无论是网络编程还是数据库编程,甚至是web开发都有Java语言的身影 很多小伙伴想学习java却布置从何学起,现在给大家分享一个JAVA大神课程笔记...

dadaxiaoxiao
2015/12/31
414
1
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
2018/07/25
0
0
全新互联网Java后端开发技术思维导图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/82714797 图文里的技术如何学习,有没有免费资料? 对Java的技术,架构技术...

JAVA高级架构v
2018/09/15
0
0
阿里P8架构师总结的互联网Java架构系统化学习路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/83181980 网络应用,最常见的研发语言是Java的和PHP。 后端服务,最常见的...

JAVA高级架构v
2018/10/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
18分钟前
4
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
18分钟前
4
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
27分钟前
4
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
30分钟前
4
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部