java坦克大战的总结_坦克大战总结(估计是马士兵的坦克大战) | 学步园
1. 匿名类:
2.画圆方法:public void paint(Graphics g) {
Color c=g.getColor();保存原来的前景色
g.setColor(Color.RED);
g.fillOval(50, 50, 30, 30);
g.setColor(c);设置原来的前景色
}从frame生成方法,且自动调用
3.实现动画效果:改变坐标,new一个线程调用repaint重画。(内部类)
调用一个线程:new Thread(new PaintThread()).start();
public class PaintThread implements Runnable{
public void run() {
while(true){
repaint();会自动调用前面的paint方法。
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4.闪烁现象:使用双缓冲消除。设置一个虚拟屏幕。
Update方法位于container.
Image 方法Image picture =null;定义一个图像。
public void update(Graphics g) {
if(offScreenImage==null){
offScreenImage=this.createImage(800,600);
}
Graphics gOffscreen=offScreenImage.getGraphics();
Color c=gOffscreen.getColor();
gOffscreen.setColor(Color.GRAY);
gOffscreen.fillRect(0, 0, 800, 600);
gOffscreen.setColor(c);
paint(gOffscreen);
g.drawImage(offScreenImage, 0, 0, null);
}使用缓冲图像消除闪烁。
5.定义常量:public static final GAME_WIDTH=800;
Public static final GAME_HEIGHT=600;
6.键盘控制坦克移动。建立键盘监听类。内部类。
private class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e) {
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_LEFT:
x=x-5;
break;
case KeyEvent.VK_RIGHT:
x=x+5;
break;
case KeyEvent.VK_UP:
y=y-5;
break;
case KeyEvent.VK_DOWN:
y=y+5;
break;
}
}
}
7.增加一百辆坦克.直接把坦克定义为一个类.利用面向对象思维.并把和坦克相关的方法,属性都添加进去.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
public class Tank {
int x,y;
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
public void draw(Graphics g) {
Color c=g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);
}
public void keyPressed(KeyEvent e) {
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_LEFT:
x=x-5;
break;
case KeyEvent.VK_RIGHT:
x=x+5;
break;
case KeyEvent.VK_UP:
y=y-5;
break;
case KeyEvent.VK_DOWN:
y=y+5;
break;
}
}
}
java坦克大战的总结_坦克大战总结(估计是马士兵的坦克大战) | 学步园相关推荐
- java gui 监听组合键_【CSDN常见问题解答】Swing监听组合键 | 学步园
其实监听键盘事件和简单,键盘也就这3个事件keyTyped, keyReleased, keyPressed 下面我们就监听一个CTRL+C组合键好了. import java.awt.Color; ...
- Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园
为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...
- java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物 | 学步园...
package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...
- 算法时间复杂度lg是多少_斐波那契数的 O(lgn) 时间复杂度算法 | 学步园
看了 This problem compares the efficiency of three methods for computing the nth Fibonacci number Fn, ...
- java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园
简单工厂模式的UML图 源码:Operation类 Java代码 packageOperation; publicabstractclassOperation { doublenumberA=0; d ...
- java 抽象工厂 类图_spring学习中常用到的工厂,抽象工厂学习 | 学步园
工厂模式有简单工厂模式,工厂方法模式和抽象工厂模式几种形态.其中简单工厂模式和工厂方法模式已经在前面作过介绍.在这里,我们来介绍抽象工厂模式. 抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的 ...
- java jxl创建多个sheet,使用jxl导出excel时怎么创建多个sheet | 学步园
虽然知道excel导出可能会出现要记录要分多个sheet的情况,但迄今为止还是没有遇到过,今天有空试了一把 export try{ 查询开始/// Class.forName("oracle ...
- runtime批处理mysql导出_【原】使用批处理BAT文件处理Mysql数据库 | 学步园
在做项目的时候,考虑到项目中很多模块是公用,数据库也是公用,所以考虑把公用模块的数据库全部用批处理生产,这样或多或少提高了一些效率. 处理方法是: 1:用一个txt保存该项目数据库名称,方便新建工程时 ...
- java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...
最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...
最新文章
- C# 使用xsd文件验证XML 格式是否正确
- python中的for A in B for i in range()
- phpwind管理权限泄露漏洞
- 2021暑假每日一题 【week7 完结】
- Spark _30_SparkStreaming算子操作Driver HA
- OllyDBG 入门之四--破解常用断点设
- IDEA 载入jQuery的方法
- Web Hacking 101 中文版 二十、漏洞报告
- git 将dev分支的代码合并到master并添加对应的Tag
- pythontransform详解_Python自定义聚合函数merge与transform区别详解
- leetcode每日一题2021.7.14【1818. 绝对差值和】
- CSDN博客主页增加赞赏码收钱模块,高端大气上档次!
- 每日一题_447.回旋镖的数量
- Pycharm | cv2爆红 | opencv-python安装 | Requirement already satisfied: opencv-python 有效解决方法
- error LNK2001的解决方法
- SQL 如何去掉字段中千位的逗号(比如set @= '1,320.00' 想得到@= '1320.00' )
- 解读人工智能、大数据和云计算的关系,大佬们赌AI竟都输了?
- C语言每日一练——第90天:青蛙跳台阶(升级版)
- new Object()和Object.create()的区别
- # HenCoder Android 自定义 View 1-8 硬件加速