【发布时间】:2014-08-11 01:33:11
【问题描述】:
首先我必须承认那里有无数的蛇问题,尽管每个程序员,即使新手或专家编写他的代码不同,所以我决定打开另一个案例,
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class Game1 extends JFrame {
float x;
float y;
int[][] tileKati = new int[30][30];
int keyCode;
int body;
boolean Right = true;
boolean Left = false;
boolean Up = false;
boolean Down = false;
boolean Running = false;
public class AL extends KeyAdapter{
public void keyPressed(KeyEvent e){
keyCode = e.getKeyCode();
if((keyCode == e.VK_LEFT) && (!Right)){
Left=true;
Down=false;
Up=false;
Running=true;
}
if((keyCode == e.VK_RIGHT) && (!Left)){
Right=true;
Down=false;
Up=false;
Running=true;
}
if((keyCode == e.VK_UP) && (!Down)){
Up=true;
Left=false;
Right=false;
Running=true;
}
if((keyCode == e.VK_DOWN) && (!Up)){
Down=true;
Left=false;
Right=false;
Running=true;
}
}
public void keyReleased(KeyEvent e){
}
}
public Game1(){
addKeyListener(new AL());
setTitle("Snake");
setSize(960,960);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
x=0;
y=0;
for(int x=0;x<30;x++){
for(int y=0;y<30;y++){
tileKati[x][y] = 0;
}
}
}
public void paint(Graphics g)
{
state();
if(Running==true)
{
if(x<0)
{
x=30;
}
if(x>30)
{
x=0;
}
if(y<0)
{
y=30;
}
if(y>30)
{
y=0;
}
}
tileKati[(int)x][(int)y] = 1;
for(int x=0;x<30;x++)
{
for(int y=0;y<30;y++)
{
if(tileKati[x][y] == 0)
{
g.setColor(Color.black);
g.drawRect(x*32, y*32, 32, 32);
}
if(tileKati[x][y]== 1)
{
g.setColor(Color.cyan);
g.fillRect(x*32, y*32, 32, 32);
}
}
}
repaint();
}
public void move(){
if(Right){
x+= 0.01;
}
if(Left){
x-=0.01;
}
if(Up){
y-=0.01;
}
if(Down){
y+=0.01;
}}
public void state(){
if(Running){
move();
}
repaint();
}
public static void main(String[] args){
new Game1();
}
}
所以我的问题如下,当我的蛇超过 3 个图块(x 或 y)时,我想开始绘制我的图块并清除“地图”的其余部分,这样我就可以制作一条 3 块图的蛇穿过地图那么我想我可以弄清楚其余的,提前谢谢。
编辑:不再有损坏的代码..
【问题讨论】:
-
这不是问题,这是愿望。
-
嗯,是的,我不清楚对不起,我只是想要一个关于如何做到这一点的提示,即使它是在伪代码上,我被卡住了。
-
你做了什么?你的尝试在哪里?
-
你具体坚持什么?
-
这里有太多与问题无关的代码。你坚持的具体部分。你为此尝试了什么算法/块,它是如何执行不正确的?我不知道为什么你会转储所有损坏的代码,而不指定与你的问题实际相关的部分。
标签: java swing paint keylistener repaint