• 大小: 57.18 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-19
  • 语言: Java
  • 标签: Java  文档  游戏源码  

资源简介

俄罗斯方块具体设计(Java描述)

带详细文档说明

资源截图

代码片段和文件信息

/* 
 *12.24日完成了蛇撞到自己的检测.修改方法是在蛇的初始化的时候用双循环来置FALSE;
 * 在重写代码的时候我借鉴了别人的思路:将整个游戏的界面定义为一个布尔型的二维数组.
 * 用一个linkedList来储存蛇.当蛇移动的时候在蛇的头部增加一个节点然后删除最后一个节点.
 * 因为只是做练习所以没做游戏界面比如菜单栏计分栏什么的.另外还有一个问题,就是当两次点击回车时,蛇的移动速度会变快
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Game {
public static void main(String args[]) {
Gameframe frame = new Gameframe();
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.show();
JOptionPane.showMessageDialog(null “上下左右控制蛇的方向\n回车开始S暂停“);
}
}

class Gameframe extends Jframe {
public Gameframe() {
setSize(294 482);
settitle(“贪吃蛇DEMO“);
this.setLocation(360 100);
Container c = getContentPane();
GamePanel panel = new GamePanel();
c.add(panel BorderLayout.CENTER);
}
}

class GamePanel extends JPanel implements KeyListener {
static int panelWidth = 294;

static int panelHeight = 450;

int rectX = 15;

int rectY = 15;

Snake snake;

Node n;

public GamePanel() {
snake = new Snake(this panelWidth / rectX panelHeight / rectY);
setBackground(Color.WHITE);
setSize(panelWidth panelHeight);
setFocusable(true);
addKeyListener(this);
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
linkedList list = snake.snakeList;
Iterator it = list.iterator();
g2.setColor(Color.black);
while (it.hasNext()) {
n = (Node) it.next();
drawNode(g2 n);
}
g2.setColor(Color.ORANGE);
Node f = snake.food;
drawNode(g2 f);
snake.drawMap(g2);// 绘制地图
}

public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_ENTER) {
begin();
} else if (keycode == KeyEvent.VK_UP) {
snake.changeDirection(Snake.up);
} else if (keycode == KeyEvent.VK_DOWN) {
snake.changeDirection(Snake.down);
} else if (keycode == KeyEvent.VK_LEFT) {
snake.changeDirection(Snake.left);
} else if (keycode == KeyEvent.VK_RIGHT) {
snake.changeDirection(Snake.right);
} else if (keycode == KeyEvent.VK_S) {
Snake.run = false;
}
}

public void keyReleased(KeyEvent e) {
}

public void keyTyped(KeyEvent e) {
}

public void drawNode(Graphics2D g Node n) {
g.fillRect(n.x * rectX n.y * rectY rectX - 2 rectY - 2);
}

public void begin() {
Snake.run = true;
SnakeThread thread = new SnakeThread(snake);
thread.start();
}
}

class Node {
int x;

int y;

public Node(int x int y) {
this.x = x;
this.y = y;
}
}

class SnakeThread extends Thread {
Snake snake;

public SnakeThread(Snake s) {
snake = s;
}

public void run() {
Snake.run = true;

while (Snake.run) {
try {
snake.move();
sleep(200);
} catch (InterruptedException e) {
}
}
Snake.run = false;
}
}

class Snake {
GamePanel panel;

Node food;

boolean[][] all;

public sta

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      32560  2006-03-13 21:49  俄罗斯方块具体设计\ErsBlocksGame.jar

     文件       5511  2008-03-21 22:18  俄罗斯方块具体设计\GreedySnake.java

     文件       2338  2006-03-13 21:20  俄罗斯方块具体设计\source code\AboutDialog.java

     文件       2031  2006-03-13 21:20  俄罗斯方块具体设计\source code\Aboutinfo.java

     文件       8590  2006-03-13 21:21  俄罗斯方块具体设计\source code\ControlPanel.java

     文件       6687  2006-03-13 21:25  俄罗斯方块具体设计\source code\ErsBlock.java

     文件      16400  2006-03-13 21:23  俄罗斯方块具体设计\source code\ErsBlocksGame.java

     文件       1716  2006-03-13 21:23  俄罗斯方块具体设计\source code\ErsBox.java

     文件       4685  2006-03-13 21:22  俄罗斯方块具体设计\source code\GameCanvas.java

     文件      68096  2007-05-05 11:44  俄罗斯方块具体设计\文档.doc

     目录          0  2008-10-17 17:43  俄罗斯方块具体设计\source code

     目录          0  2008-04-14 11:34  俄罗斯方块具体设计

----------- ---------  ---------- -----  ----

               148614                    12


评论

共有 条评论