- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个简单的 flappy bird 游戏作为 Java Applet。我遇到的问题是图形极度无响应,通常在按下键后需要 5-10 秒才能响应。此外,它仅在按键被按下一定次数(大约 6 或 7 次)时才会响应。我认为这不是我电脑的问题,因为我在高规范 MacBook Pro(8 GB RAM)上运行它, i5 处理器)。这是我使用的两个主要类:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
//The main class I use to run the game
public class Flap extends Applet implements Runnable, KeyListener
{
final int WIDTH = 700, HEIGHT = 500;
Thread thread;
Bird b;
boolean beenPressed = false;
public void init()
{
this.resize(WIDTH, HEIGHT);
this.addKeyListener(this);
b = new Bird();
thread = new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
g.setColor(Color.CYAN);
g.fillRect(0, 0, WIDTH, HEIGHT - 100);
g.setColor(Color.green);
g.fillRect(0, 400, WIDTH, HEIGHT);
b.draw(g);
}
public void update(Graphics g)
{
paint(g);
}
@Override
public void run()
{
for(;;)
{
//Pillar upPillar = new Pillar()
b.move();
repaint();
try
{
Thread.sleep(500);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_UP)
{
if(!beenPressed)
{
b.setUp(true);
}
beenPressed = true;
}
else
{
b.setDown(true);
}
}
@Override
public void keyReleased(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_UP)
{
beenPressed = false;
b.setUp(false);
}
else
{
b.setDown(false);
}
}
@Override
public void keyTyped(KeyEvent arg0)
{
}
}
import java.awt.Color;
import java.awt.Graphics;
//The Bird class, which has the methods for the player to move
public class Bird
{
int x, y, yvel;
boolean goingUp, goingDown;
public Bird()
{
x = 200;
y = 200;
}
public void draw(Graphics g)
{
g.setColor(Color.yellow);
g.fillRect(x, y, 60, 25);
}
public void move()
{
if(goingUp)
{
yvel -= 50;
}
else if(goingDown)
{
yvel += 50;
}
y += yvel;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void setUp(boolean b)
{
goingUp = b;
}
public void setDown(boolean b)
{
goingDown = b;
}
}
虽然还没有完成,但在这个阶段,我觉得至少鸟儿应该动起来了。
最佳答案
图形并不慢,更新之间的时间太长了。它基本上允许在更新周期发生之前按下和释放键。
我会将 Thread.sleep(500);
减少到更像 Thread.sleep(10);
并将移动增量更改为更像...
public void move()
{
if(goingUp)
{
yvel -= 1;
}
else if(goingDown)
{
yvel += 1;
}
y += yvel;
}
作为起点。
使用小程序,坏主意。 Applet 已被弃用,是一项已死的技术。 Applet 也不是双缓冲的,因此您可能最终会遇到一些可怕的闪烁。 KeyListener 因存在问题(不响应)而闻名,虽然它是使用 AWT 时的唯一解决方案,但使用 Swing 时,ket 绑定(bind) API 是更好的解决方案
我建议的第一件事是看一下使用 JPanel 作为基础组件,然后看一下 Performing Custom Painting和 Painting in Swing更好地理解绘画的工作原理
如果您“真的”需要高性能(或者只是想更好地控制绘画过程),您还应该看看 BufferStrategy and BufferCapabilities
我还建议您查看 JavaFX对于这种事情,它有更好的 API
关于java - Flappy Bird 图形慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573682/
一些想法 自学python已经有快三个月了 最近这段时间没有怎么写过python 很多东西反而又遗忘了 准备翻以前的笔记复习一下在博客上记录下来 自己也没能够做出什么厉害的东西 小鸟游戏算是目前自
我正在尝试编写一个简单的 flappy bird 游戏作为 Java Applet。我遇到的问题是图形极度无响应,通常在按下键后需要 5-10 秒才能响应。此外,它仅在按键被按下一定次数(大约 6 或
我正在尝试创建一种遗传算法来学习玩飞扬的小鸟。我的游戏正在运行,这是我的 Bird 类: public class Bird extends Player { public NNetwork netw
所以,我正在制作一只飞翔的小鸟克隆。问题是我是使用 java 和 libgdx 编程的新手,我想请求您的帮助。我想在特定区域(只是一个简单的矩形形状)进行触摸检测,而不是在整个屏幕上单击。 这是我当前
好的,我有 Game、Bird 和 Board 类。我的 Game 类中有管道创建、删除和移动代码。有人建议我不要创建 Pipe 类并创建一个管道对象。没有管道代码,我的游戏运行流畅,尽管没有管道出现
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
为了熟悉强化学习,我正在实现基本的 RL 算法来玩游戏 Flappy Bird 。我已完成所有设置,唯一遇到的问题是实现奖励功能。我希望能够处理屏幕并识别是否已得分或鸟是否已死亡。 处理屏幕是使用 m
这里是新手...我正在学习 Brent 的 Flappy Bird 教程,尽管我正在制作类似 Icy Tower 的游戏,但开始屏幕等内容也是如此。 事实是,布伦特使用了: public static
在iOS游戏flappy bird中,有一段距离后生成的管道,它们生成的高度随机 我也在尝试制作飞扬的鸟 pipe (我在我的代码中称它为 Twig 而不是 pipe )。除了管道垂直移动而不是水平移
我想在我的 flappy bird 游戏中添加一个炸弹,但它无法检测到碰撞。如果这只鸟接触了炸弹,我就无法检测到它炸弹出现了,但我无法让它检测到与鸟的碰撞,这是我到目前为止的代码。另外,我没有为炸弹分
对 swift 和一般编码非常陌生,所以请放轻松): 我将如何创建一个自定义 UIAlert,类似于 Flappy Bird 结束游戏的方式。我假设它只是游戏结束后出现的某种容器节点?看起来很简单,但
我正在开发一个 flappy bird clone,我真的被我想创建的这个按钮卡住了。对不起,我知道这是一个基本问题,但我是初学者,我真的需要你的帮助。所以,游戏差不多完成了,但我不想触摸整个屏幕让小
我正在制作 Flappy Bird 的克隆版。当我从纵向模式切换到横向模式时,我遇到了一个错误,即我的地面节点消失了。 编辑:我的代码基于此:https://github.com/fullstacki
下面是创建和管理游戏管道的基本代码: import pygame as pg import sys,os,math,time,random # colours white = (255,255,255
我一直在学习技术教程,在第 4 部分结束时一切正常,第 5 部分只是解释了 neat,然后在第 6 部分中实现了 neat,到一半时我们再次测试了代码第 7 部分(最后一部分)它没有正常工作,但没有错
所以我正在学习如何使用 Sprite 来构建 iOS 游戏。我正在重新制作 flappy bird 作为我的第一个项目。我无法弄清楚如何正确工作的最后一段代码是鸟在空中落下时的旋转。 当我的鸟通过重力
我学习了如何在 iOS 上创建游戏。现在我创建了一个 Flappy bird 克隆。 Flappy Bird Clone我对此深信不疑——当鸟接触到一些管道时,它开始旋转。游戏当然结束了。但是当我开始
我在隔离期间开始学习代码,并决定学习如何使用 pygame(因为我只知道 python 的基础知识),我在 youtube 上学习了一个名为“通过制作 flappy bird 学习 pygame”的教
我目前正在使用 SpriteKit 创建一个 Flappy Bird 风格的游戏。我想让游戏在特定条件下加速,让游戏更难。目前,我正在通过增加 self.speed 来做到这一点。 这对于加快游戏速度
我正在关注 youtube 上的一个教程,该教程使用 python 和 pygame 制作了一个 flappy bird 游戏。到目前为止,我已经完成了他所做的工作,但是当我尝试运行代码时出现错误:
我是一名优秀的程序员,十分优秀!