📄 贪吃蛇游戏界面.java.bak
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class 贪吃蛇游戏界面 extends JPanel implements Runnable,KeyListener
{
JFrame snakeplay=new JFrame();
JPanel[][] grids;
JLabel gameover;
LinkedList snakeBody;
LinkedList others;
Thread thread;
Color bodyColor=Color.red;
Color headColor=Color.green;
Color tempColor=Color.orange;
Color othersColor=Color.blue;
snakeUse direction;
snakeUse snakeHead;
snakeUse Block;
SnakeModel snake;
int row = 25;
int col = 50;
int gameScore=0;
int snakeLength=3;
long speedTime;
boolean readyAddScore;
boolean isEnd;
boolean gameHaveExit;
public 贪吃蛇游戏界面(贪吃蛇界面 游戏界面){
snakeplay = 游戏界面;
//生成游戏界面
grids=new JPanel[row][col];
others=new LinkedList();
snakeBody=new LinkedList();
snakeHead=new snakeUse(0,0);
Block=new snakeUse(0,0);
direction=new snakeUse(0,1);
setLayout(new GridLayout(row,col,1,1));
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
grids[i][j]=new JPanel();
grids[i][j].setBackground(Color.blue);
add(grids[i][j]);
}
}
addKeyListener(this);
}
public void newGame(long speedTime){
this.speedTime=speedTime;
if (gameHaveExit) {
snake.initializeV();
}else{
snake=new SnakeModel(row,col);
gameHaveExit=true;
thread=new Thread(this);
thread.start();
}
requestFocus();
direction.setX(0);
direction.setY(1);
gameScore=0;
snakeLength=3;
updateTextFiled(""+gameScore,""+snakeLength);
isEnd=false; for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
add(grids[i][j]);
}
}
repaint();
try{remove(gameover);}catch(NullPointerException e){}
}
public void stopGame(){
requestFocus();
isEnd=true;
}
public void resumeGame(){
requestFocus();
isEnd=false;
}
public int getGameScore()
{return gameScore; }
private void updateTextFiled(String score,String body){
((贪吃蛇界面)snakeplay).textField1.setText(score);
((贪吃蛇界面)snakeplay).textField2.setText(body);
}
private void updateBg(){
snakeBody=snake.getSnake();
Iterator e =snakeBody.iterator();
while(e.hasNext()){
snakeUse t=(snakeUse)(e.next());
grids[t.getX()][t.getY()].setBackground(bodyColor);
}
//设定蛇头颜色
snakeHead=snake.getSnakeHead();
grids[snakeHead.getX()][snakeHead.getY()].setBackground(headColor);
//设定背景颜色
others=snake.getOthers();
e =others.iterator();
while(e.hasNext()){
snakeUse t=(snakeUse)(e.next());
grids[t.getX()][t.getY()].setBackground(othersColor);
}
//设定临时块的颜色
Block=snake.getTempBlock();
grids[Block.getX()][Block.getY()].setBackground(tempColor);
}
//实现Runnable接口
public void run(){
while(true){
try{Thread.sleep(speedTime);}
catch (InterruptedException e){}
if(!isEnd){
isEnd=!snake.move(direction);
updateBg();
if(snake.getReadyAddScore()){
gameScore+=100;
snakeLength+=1;
updateTextFiled(""+gameScore,""+snakeLength);
if (gameScore%100 == 0 && speedTime>25)
{JOptionPane.showMessageDialog(snakeplay,"升级啦!\n注意了!\nREADY? GO ! ! !");
if (speedTime >100 )
speedTime -=100;
else if (speedTime <=100 )
speedTime -=25;
}
}
if (isEnd)
{ //GAME OVER是干什么
//重新开始
try{for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
remove(grids[i][j]);
}
}
}catch(ArrayIndexOutOfBoundsException e){}
setLayout(new FlowLayout());
Icon gameoverPicture = new ImageIcon( "GAMEOVER.jpg" );
gameover = new JLabel(gameoverPicture);
gameover.setBackground(Color.red);
add(gameover);
repaint();
validate();
//重新开始结束
}
}
}
}
//实现KeyListener接口
public void keyPressed(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.VK_LEFT) {
direction.setX(0);
direction.setY(-1);
}
if (event.getKeyCode() == KeyEvent.VK_RIGHT) {
direction.setX(0);
direction.setY(1);
}
if (event.getKeyCode() == KeyEvent.VK_UP) {
direction.setX(-1);
direction.setY(0);
}
if (event.getKeyCode() == KeyEvent.VK_DOWN) {
direction.setX(1);
direction.setY(0);
}
if (event.getKeyCode() == KeyEvent.VK_ENTER){
isEnd=!isEnd;
}
}
public void keyReleased(KeyEvent event){}
public void keyTyped(KeyEvent event){}
//实现KeyListener接口
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -