键盘控制小游戏简化版(功能添加更新。。)

JAVA入门级小程序,个人感觉可以引发外行人对JAVA产生一些兴趣,如果我刚接触JAVA的时候能碰到这种程序就好了,我就不会这么被动的学JAVA了,到现在也学的很零散,没能形成系统知识。兴趣是最好的老师。努力学习JAVA中。。。

      以下贴出代码,附有程序运行结果图。所用代码均只用作演示,存在不少缺陷。

        实现了键盘方向键控制的最简单的球的移动及边缘判定,打印出球的实时坐标。

/**
 * 
 */
package ballgame;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
 * 2014-6-11
 * 
 * @author Gelar
 */

public class BallGame extends Frame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.jpg");

	double x = 250;
	double y = 200;
	double xCoord = 250;
	double yCoord = 200;
	boolean left, right, up, down;

	public void paint(Graphics g) {
		g.drawImage(ball, (int) x, (int) y, null);
		if (left && x > 0) {
			x = x - 10;
			xCoord = x;
			printCoords();
		}
		if (right && x < 470) {
			x = x + 10;
			xCoord = x;
			printCoords();
		}
		if (up && y > 30) {
			y = y - 10;
			yCoord = y;
			printCoords();
		}
		if (down && y < 370) {
			y = y + 10;
			yCoord = y;
			printCoords();
		}
	}

	void launchFrame() {
		setSize(500, 400);
		setLocation(420, 170);
		setBackground(Color.black);
		setTitle("Ball Game");
		setVisible(true);
		new PaintThread().start();
		addKeyListener(new KeyMonitor());
		printInitialCoords();
	}

	void printInitialCoords() {
		System.out.println("(250.0,200.0)");
	}

	void printCoords() {
		if (left || right || up || down) {
			System.out.println("(" + xCoord + "," + yCoord + ")");
		}
	}

	public static void main(String[] args) {
		new BallGame().launchFrame();
	}

	class PaintThread extends Thread {
		public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(200);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

	class KeyMonitor extends KeyAdapter {
		public void keyPressed(KeyEvent e) {
			if (37 == e.getKeyCode()) {
				left = true;
			}
			if (39 == e.getKeyCode()) {
				right = true;
			}
			if (38 == e.getKeyCode()) {
				up = true;
			}
			if (40 == e.getKeyCode()) {
				down = true;
			}
		}

		public void keyReleased(KeyEvent e) {
			if (37 == e.getKeyCode()) {
				left = false;
			}
			if (39 == e.getKeyCode()) {
				right = false;
			}
			if (38 == e.getKeyCode()) {
				up = false;
			}
			if (40 == e.getKeyCode()) {
				down = false;
			}
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此资源是演示程序,大家可以免积分下载。 ------------------------------------------------------ 编写设定游戏按键的小程序 随着项目规模的扩大,要考虑的事情增多了。以前不用考虑的按键响应现在也觉得需要进行一番变革了。主要是看到市面上一些大中型的PC游戏都有配置程序,其中有一项功能就是设定游戏的按键。我这里挑选了一些日本C80和C81的有名游戏(《Grief Syndrome》(忧伤综合症,魔法少女小圆),《Fairy Bloom Freesia》(花精灵芙莉季娅),《妖妖剑戟梦想》)的游戏配置程序的截图。 这些小程序可以设置游戏的运行方式,以便让各种类型的显示屏、显卡、操作系统、游戏输入设备能够准确无误地工作,游戏按键的设定也是其一。配置程序将游戏的配置保存为一个文件,游戏中可以载入这些文件。其余的配置我们暂且不讨论,这里讨论的是按键的设置。 有时候我玩别人的游戏,一开始还是有些不适应的,因为游戏开发者的按键习惯不可能与用户的按键习惯完全一致,但是为了不破坏封装性,以及增添简便性,游戏开发者为用户指定了按键设定小程序,这样用户就能够很简单地设定自己喜欢的按键了。我接下来要做的就是游戏开发者做的事情。 为了减少开发的复杂度,我使用开发框架WTL来制作这个小程序。读者如果精通MFC,也可以使用MFC来制作。记得“Lion Heart”组织制作的《Sanae Challenge》(早苗的挑战)中的游戏配置就是用MFC制作的。随后要注意是否使用手柄等一些外设。如果是的话,制作这个程序就一定要用DirectInput,否则无法对游戏设备进行编程。最后 对保存的文件没有什么要求,我一般每一个键保存一个字节。 首先在主对话框CMainDlg类中添加一系列键值,以后用来保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值