`
qq_24665727
  • 浏览: 120287 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java高级应用,坦克大战的屏幕闪烁问题

阅读更多
闪烁的原因?
  刷新重画的频率太快,paint方法还没完成。
  显示不均匀。

  解决方法:将所有的东西画在虚拟的图片上,然后用paint方法画在屏幕上。





package Frame;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//消除闪烁,使用双缓冲
//线程重画更加均匀,更能控制重化的速度。按键重画不能解决子弹自动飞行的问题;

public class TankClient extends Frame {

public int x=50,y=50;
   Image offScreenImage=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.green);
gOffScreen.fillRect(0, 0, 800, 600);
gOffScreen.setColor(c);
paint(gOffScreen);//画在背后图片上
g.drawImage(offScreenImage, 0, 0,null);//画在屏幕上


}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.red);
g.fillOval(x, y, 30, 30);
g.setColor(c);
y+=5;
}



public void lauchFrame() {
setTitle("TankWar");
setBounds(230, 100, 800, 600);
// 匿名内部类,短,不涉及将来的扩展
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

setResizable(false);
setBackground(Color.GREEN);
setVisible(true);
new Thread(new PaintThread()).start();
}

public static void main(String[] args) {
TankClient tc = new TankClient();
tc.lauchFrame();

}
//内部类,只为这个TankWar服务,方便的访问包装类的方法,不方便公开,
private class PaintThread implements Runnable{
public void run (){
while(true){
repaint();//内部调用父类的paint方法;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

}


后面会继续完善这个小项目!!
2
3
分享到:
评论

相关推荐

    期末作业课程设计使用java开发的坦克大战小游戏源码.zip

    期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业...

    java游戏,坦克大战java游戏,坦克大战

    java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战java游戏,坦克大战...

    java做的坦克大战(带图片)

    《Java实现的坦克大战游戏详解》 坦克大战是一款深受玩家喜爱的经典游戏,它结合了策略、射击和竞技的元素,让玩家在紧张刺激的战斗中体验到无尽的乐趣。本项目是用Java语言开发的坦克大战游戏,下面将详细介绍其...

    Java语言编写的经典坦克大战游戏.zip

    Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战游戏.zip Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战游戏.zip Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战...

    JAVA实现的坦克大战-课程设计

    【JAVA实现的坦克大战-课程设计】是一款基于Java编程语言开发的坦克战斗游戏,它旨在帮助学生或初学者深入理解面向对象编程、游戏逻辑构建以及图形用户界面(GUI)的设计。游戏提供了两个版本:V1和V2,分别代表了...

    JAVA+Swing坦克大战

    【JAVA+Swing坦克大战】是一款基于Java编程语言和Swing图形用户界面库开发的经典游戏。Swing是Java Standard Edition(Java SE)的一部分,用于构建桌面应用,它提供了丰富的组件库来创建美观、交互式的用户界面。这...

    Java坦克大战游戏源代码

    Java坦克大战游戏源代码 关于项目 Java中的坦克大战游戏是一款简单的多人游戏对战游戏。这个游戏和之前的游戏很相似。本系统是在Eclipse IDE中制作的。此外,您需要在计算机上安装 JDK 和 JRE 才能运行它。这是一个...

    Java桌面-坦克大战小游戏.zip

    Java桌面_坦克大战小游戏.zipJava桌面_坦克大战小游戏.zip Java桌面_坦克大战小游戏.zipJava桌面_坦克大战小游戏.zip Java桌面_坦克大战小游戏.zipJava桌面_坦克大战小游戏.zip Java桌面_坦克大战小游戏.zipJava桌面...

    java简单的坦克大战小游戏.zip

    java简单的坦克大战小游戏.zipjava简单的坦克大战小游戏.zip java简单的坦克大战小游戏.zipjava简单的坦克大战小游戏.zip java简单的坦克大战小游戏.zipjava简单的坦克大战小游戏.zip java简单的坦克大战小游戏.zip...

    java实现的坦克大战

    通过研究《Java实现的坦克大战》,不仅可以体验游戏的乐趣,还能深入学习Java编程的各个方面,锻炼解决问题和调试代码的能力,对提升编程技能大有裨益。同时,这也是一个很好的项目实践,鼓励学习者动手尝试修改和...

    坦克大战Java+实训报告

    综上所述,《坦克大战Java实训报告》涵盖了Java编程、数据库交互、图形界面设计、算法应用、游戏逻辑实现以及网络通信等多个IT领域的知识点,是学习和提升综合编程技能的良好实践案例。通过这个项目,开发者不仅能...

    Java版 坦克大战 MVC游戏框架

    【Java版 坦克大战 MVC游戏框架】是一款基于Java编程语言开发的坦克大战小游戏,其设计理念是采用MVC(Model-View-Controller)架构模式,以提高代码的可维护性和可扩展性。在这个项目中,我们将深入探讨如何利用...

    Java实现简单坦克大战

    在本项目中,"Java实现简单坦克大战" 是一个基于Java编程语言开发的趣味游戏,旨在教授初学者如何使用Java进行游戏开发。这个游戏的核心概念包括对象编程、图形用户界面(GUI)设计、事件处理和基本的游戏逻辑。接...

    java课程设计:基于Java 编写的坦克大战游戏.zip

    java课程设计:基于Java 编写的坦克大战游戏 java课程设计:基于Java 编写的坦克大战游戏 java课程设计:基于Java 编写的坦克大战游戏 java课程设计:基于Java 编写的坦克大战游戏 java课程设计:基于Java 编写的...

    java编写的坦克大战

    而用Java语言编写坦克大战,不仅可以让我们重温游戏的乐趣,还能在实践中深入理解Java编程的基础与高级特性。本文将围绕这个主题,详细讲解如何使用Java来实现坦克大战的核心功能。 一、项目环境构建 首先,我们...

    基于Java的坦克大战游戏的设计与实现设计软件程序源码+word毕业论文文档.zip

    Graphics类是软件包java.awt(其全部类都用来用户界面的创建和图形图像的绘制)下的类,它同意一个应用程序绘制到组件,以及在屏幕图像上进行绘制。Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息。...

    java版的坦克大战小游戏源码

    "Java版的坦克大战小游戏源码"就是一个极佳的实践项目,它不仅让我们有机会重温Java的基础知识,还能够深入理解多线程、内部类、图形绘制以及泛型等高级特性。下面,我们将详细探讨这个项目中的关键知识点。 首先,...

    java坦克大战小游戏

    【Java坦克大战小游戏】是一款基于Java SE平台,利用面向对象编程技术开发的小型游戏,旨在帮助开发者巩固和实践面向对象的基础知识。在这个项目中,我们可以深入理解Java编程语言中的类、对象、继承、封装和多态等...

Global site tag (gtag.js) - Google Analytics