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 stubFrame f=new Frame();     //调用jar包awt下的Frame窗口类进行实例化f.setVisible(true);     //调用显示窗口的方法,设置窗口可见参数为truef.setSize(1000,800);     //设置窗口大小,括号内为窗口大小参数,单位为像素f.setResizable(false);  //设置是否能改变窗口大小,是为true,否为falsef.setTitle("坦克世界");  //设置标题 f.addWindowListener(new WindowAdapter() {//使用匿名内部类创建窗口监听器@Overridepublic void windowClosing(WindowEvent e) {//被监听者// TODO Auto-generated method stubSystem.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);     //调用显示窗口的方法,设置窗口可见参数为truesetSize(800,600);       //设置窗口大小,括号内为窗口大小参数,单位为像素setResizable(false);  //设置是否能改变窗口大小,是为true,否为falsesetTitle("̹坦克世界"); //设置标题 addWindowListener(new WindowAdapter() {//使用匿名内部类创建窗口监听器@Overridepublic void windowClosing(WindowEvent e) {//被监听者// TODO Auto-generated method stubSystem.exit(0);//系统退出}}); }
}

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

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

@Overridepublic 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{@Overridepublic void keyPressed(KeyEvent e) {     //键盘按下// TODO Auto-generated method stub}@Overridepublic 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;
}

JAVA开发坦克大战小游戏个人实战笔记相关推荐

  1. 【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏

    基于JAVA的坦克大战小游戏--入门级小游戏 零.项目获取 一.项目简介 二.开发环境 三.游戏玩法 四.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100 ...

  2. Java实现的经典坦克大战小游戏

    Java实现的经典坦克大战小游戏 先看一下游戏结构: 有点多,没有耐心的可以不用看,这里先给出链接吧! 云链接:经典坦克大战 提取码:s9ai 这里就不介绍功能了,贴了一张游戏运行的截图,具体的功能自 ...

  3. 【180930】坦克大战小游戏源码

    坦克大战小游戏源码程序实现了小霸王游戏机上坦克大战的功能,主要功能是开火.移动.3种不同的敌方坦克.用户自制地图等,缺点是有些小细节还处理的不好,感觉画面不够好,还没实现自动的下一关功能(主要是嫌做默 ...

  4. 用Java开发贪食蛇小游戏

    用Java开发贪食蛇小游戏 一.实验内容 1.实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆子,上下左右控制"蛇"的移动,吃到"豆子&qu ...

  5. 【Java】Java基础飞机大战小游戏完整代码

    Java基础飞机大战小游戏完整代码 先来展示一下代码实现结果图 主函数ShootGame 初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片:构建产生敌人算法:产生英雄机算法:发射子弹算法:判断是 ...

  6. Java开发贪吃蛇小游戏

    Java开发贪吃蛇小游戏 文章目录 Java开发贪吃蛇小游戏 一.开发思路 二.具体开发过程 1.绘制静态游戏窗口 2.导入素材图标 3.绘制游戏面板 4.绘制一条静态的小蛇 5.让小蛇动起来 ①监听 ...

  7. java开发的俄罗斯方块小游戏,可下载,2021-06-22

    java开发的俄罗斯方块小游戏,可下载 文章目录 java开发的俄罗斯方块小游戏,可下载 游戏操作介绍 游戏压缩包下载 最近在老师要求下组队,一起使用eclipse编写了Java游戏代码,导入sqli ...

  8. 基于JavaSwing开发潜艇大战小游戏 课程设计 大作业源码

    基于JavaSwing开发潜艇大战小游戏:  (大作业) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk 运行效果图: 基于JavaSwing开发潜艇大战小游戏:  (大作业) ...

  9. html实现经典坦克大战小游戏

    文章目录 1.设计来源 1.1 游戏主界面 1.2 游戏界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/w ...

最新文章

  1. vue 项目抛出警告
  2. 前端学习(2356):uni基本的插件安装
  3. LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)
  4. 迷你linux操作系统,自己动手做一个迷你型Linux操作系统
  5. sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
  6. 2020-2021年中国购物中心消费者洞察报告
  7. NLP --- 文本分类(基于LDA的隐语意分析训练算法详解)
  8. 书柜的尺寸(bzoj 1933)
  9. redis作用_Java高级架构笔记——实现故障恢复自动化:详解Redis哨兵技术
  10. 锁相环环路滤波器计算公式_锁相环和射频振荡器简介
  11. wso2 esb 配置mysql_WSO2企业服务总线(WSO2 ESB)介绍
  12. 使用npm安装yarn命令
  13. 7-1 前序序列创建二叉树
  14. 战地1服务器怎么显示fps,战地1怎么显示FPS帧数-战地1显示FPS帧数方法介绍
  15. IOS APP 公司主体变更的转让流程
  16. SOFABoot框架(蚂蚁金服)
  17. Qt5.12 QML——TextMetrics字体长度的测量指标
  18. 「Java基础」范型
  19. Globelmposter勒索病毒最新“十二主神”预警
  20. R语言语法及建模合集

热门文章

  1. php curl模拟 浏览器 伪装客户端 访问 真实可用
  2. 微信小程序直播火的原因是什么
  3. php 获取浏览器指纹,浏览器指纹保护器,可以修改plugs,语言,mimeTypes
  4. word表格中长表格每页显示表头/取消表头显示
  5. GD32F303固件库开发(11)----ADC在DMA模式下扫描多个通道
  6. python 经典ppt_python操作word、ppt的详解
  7. Lambda表达式创建线程
  8. php+mysql用户管理系统毕业设计(源代码+毕业论文)
  9. 服务器信息管理 实例,配置信息输出到syslog服务器示例
  10. 笔记:uniapp授权微信公众号