本程序是一个简单的坦克游戏程序,使用java语言编写,在jdk环境下运行。游戏开始时,用户通过键盘操纵坦克移动,转弯和射击,与敌人坦克进行交战,知道消灭所有敌人就可以过关。本程序包括23个类,2800多行代码,和三个gif图片。
本程序运行的主函数
思考----编程-----思考----编程
绘图还必须该清楚一个非常重要的概念-像素
一个像素等于多少厘米
计算机屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器分辨率是800x600,表示计算机屏幕上每一行都由900个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度单位,而厘米是一个长度单位,两者无法比较
Graphics 类你可以理解为画笔,为我们提供了各种绘制图形的方法:
画直线drawLine(int x1,int y1,int x2,int y2)
画矩形变矿 drawRect(int x,int y,int width,int height)
画椭圆边框 drawOval(int x,int y,int width,int height)
填充矩形 fillRect(int x,int y,int width,int height)
填充椭圆 fillOval(int x,int y,int width,int height)
画图片 drawImage(Image img,int x,int y,..)
//画图片
//1.获取图片资源
// Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bg.jpg"));
// g.drawImage(image,10,10,200,200,this);
画字符串 drawString(String str,int x,int y)
//画字符串
//设置画笔字体
g.setColor(Color.red);
g.setFont(new Font("微软雅黑",Font.BOLD,50));
//这里设置的坐标,原点在左下角
g.drawString("北京你好",10,10);
设置画笔的字体 setFont(Font font)
设置画笔的颜色 setColor(Color c)
事件处理机制-看一个问题
BallMove.java--让小球收到键盘的控制,上下左右移动
package com.event;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/*
* @author 远空_
* @version 1.0
* 演示小球通过键盘控制上下左右的移动->讲解Java的事件控制
* */
public class BallMove extends JFrame{
MyPanel mp = null;
public static void main(String[] args) {
new BallMove();
}
public BallMove(){
mp = new MyPanel();
this.add(mp);
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addKeyListener(mp);
this.setVisible(true);
}
}
class MyPanel extends JPanel implements KeyListener {
private int x=10,y=10;
//为了让小球可以移动,把它的坐标设置成变量
public void paint(Graphics g){
super.paint(g);
g.fillOval(x,y,20,20);//默认黑色
}
//有字符输出时,该方法就会触发
@Override
public void keyTyped(KeyEvent e) {
}
//当某个键按下,该方法触发
@Override
public void keyPressed(KeyEvent e) {
//根据用户按下的不同键,来处理小球移动
//在java中,会给每个键分配一个值
switch (e.getKeyCode()){
case KeyEvent.VK_W:
y--;
break;
case KeyEvent.VK_S:
y++;
break;
case KeyEvent.VK_A:
x--;
break;
case KeyEvent.VK_D:
x++;
break;
}
//让面板重绘
/*在以下情况paint()将会被调用:
1. 窗口最小化,再最大化
2. 窗口的大小发生变化
3. repaint函数被调用*/
this.repaint();
}
//当某个键松开,该方法触发
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode());
}
}
介绍
KeyLinstener接口(需要实现)
//有字符输出时,该方法就会触发
@Override
public void keyTyped(KeyEvent e) {
}
//当某个键按下,该方法触发
@Override
public void keyPressed(KeyEvent e) {
}
//当某个键松开,该方法触发
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode());//输出松开的按键
}
JFrame的方法
this.addKeyListener(mp);//窗口JFrame对象可以监听键盘事件,即可以监听到面板发生的键盘事件。
java事件处理是采取“委派事件模型”。当事件发生时,产生事件的对象就会把此“信息”传递给“事件的监听者”处理,这里说的“信息”实际上就是java.awt.event事件类库里某个类所创建的对象,把它称为“事件的对象”。
前面我们提到几个重要的概念事件源,事件,事件监听器我们下面来全面的介绍它们
事件源:事件源是一个产生事件的对象,比如按钮,窗口等。
事件:事件就是承载事件源状态改变时的对象,比如当键盘事件、鼠标事件、窗口事件等等,会生成一个事件对象,该对象保存着当前事件很多信息,比如KeyEvent对象有含义被按下键的Code值。java.awt.event包和javax.swing.event包中定义了各种事件类型
事件类型:查阅jjdk文档
添加功能:当玩家按下j键,发射一颗子弹。
添加功能
防止敌人坦克重叠运动
记录玩家的成绩,存盘退出
记录当时敌人的坦克坐标,存盘退出
玩游戏时,可选择是开新游戏还是继续上局游戏
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。