JAVA开发坦克大战小游戏个人实战笔记

2022-07-28,,,,

1、认识frame类
a、这是一个窗口类
b、常用方法
setSize();## 标题//设置大小
setVisible();//显示窗口
setTitle();//设置标题
setResizable();//设置是否能改变窗口大小
addWIndowListener //创建窗口监听器`

package tank;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class mainActivity {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Frame f=new Frame();     //调用jar包awt下的Frame窗口类进行实例化
		f.setVisible(true);     //调用显示窗口的方法,设置窗口可见参数为true
		f.setSize(1000,800);		//设置窗口大小,括号内为窗口大小参数,单位为像素
		f.setResizable(false);  //设置是否能改变窗口大小,是为true,否为false
		f.setTitle("坦克世界");	//设置标题 
		f.addWindowListener(new WindowAdapter() {//使用匿名内部类创建窗口监听器

			@Override
			public void windowClosing(WindowEvent e) {//被监听者
				// TODO Auto-generated method stub
				System.exit(0);//系统退出
			}	
		});
	}
}

这样就可以点击自己创建好的窗口的“❌”号关闭这个窗口了。

其实还可以重新创建一个class文件命名为tankfram ,使其继承自Frame,在tankframe类中还应该创建一个无参的构造方法在这个无参的构造方法中写入属性设置

**package tank;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class tankfram extends Frame {
	public tankfram() {
		setVisible(true);     //调用显示窗口的方法,设置窗口可见参数为true
		setSize(800,600);		//设置窗口大小,括号内为窗口大小参数,单位为像素
		setResizable(false);  //设置是否能改变窗口大小,是为true,否为false
		setTitle("̹坦克世界");	//设置标题 
		addWindowListener(new WindowAdapter() {//使用匿名内部类创建窗口监听器
			@Override
			public void windowClosing(WindowEvent e) {//被监听者
				// TODO Auto-generated method stub
				System.exit(0);//系统退出
			}
		});	
	}
}

接着在mainActivity中调用这个无参的构造方法即可

2、重写paint方法,使用Graphics画笔工具画一个矩形
这个画笔工具其实就是一个Frame类中的方法,我们需要早tankframelei中重写这个方法

@Override
	public void paint(Graphics g) {//Graphics 可以理解为画笔
		g.fillRect(200, 200, 50, 50);//使用画笔在窗口的横向距离200像素点,纵向距离200200像素点的地方创建一个长50像素宽50像素的矩形

	}

在这个方法中x轴也就是横向是标题栏从左至右依次增大,y轴也就是纵向是标题栏从上往下依次增大
3、让我们画出的矩形动起来
要让我们画出的矩形动起来一般我们需要设置一个线程,但是考虑到我是一个初学者,我准备使用一个循环来完成它。
首先,需要介绍一个监听器,这个监听器是KeyAdapter,这个监听器中有两个方法,一个是keyPressed,这个方法是监听键盘的按下活动的,另一个是keyReleased方法,这个方法是监听键盘抬起活动的

	class mykeyListener extends KeyAdapter{

		@Override
		public void keyPressed(KeyEvent e) {     //键盘按下
			// TODO Auto-generated method stub
		}

		@Override
		public void keyReleased(KeyEvent e) {	//键盘抬起
			// TODO Auto-generated method stub
		}
}

这两个方法都是从键盘适配器类KeyAdapter重写的,我们可以在这个两个冲写的方法中写入我们所需要实现的内容。

要想让我们画出的图形动起来直接在tankfram类中定义两个变量,让着两个变量替换掉paint放发中的参数,然后在键盘监听这个类中重新定义方块的坐标并宠幸显示方块即可,说到这里系统又一个放是是专门用来完成界面刷新的一个方法那就是repaint()。

但是呢,我们又不可能以值收在电脑旁按键盘,这时候我想到了用循环来做这个功能。

将mykeyListener中的功能给注释掉,(注意:不要直接删除,后面可能会用到),然后在paint方法中写入 x=+10,接着会带mainAvcivity类中写入一个while死循环,这时编辑器会提示报异常,我们直接将这个异常用throw语句抛出即可,在这个循环中写入更新界面的方repaint()方法,这样我们方块就动起来了

public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub   
		tankfram tf=new tankfram();//对tankfram进行实例化
		while(true) {
			Thread.sleep(100);
			tf.repaint();
		}
	}
public void paint(Graphics g) {//Graphics 可以理解为画笔
		g.fillRect(x, y, 50, 50);//使用画笔在窗口的横向距离200像素点,纵向距离200像素点的地方创建一个长50像素宽50像素的矩形
		x+=10;
}

本文地址:https://blog.csdn.net/qq_43775449/article/details/109258128

《JAVA开发坦克大战小游戏个人实战笔记.doc》

下载本文的Word格式文档,以方便收藏与打印。