JAVA贪吃蛇源代码(一)(2008-10-10 23:50:14)转载标签:java贪吃蛇源码
源代码it 分类:技术专区
SnakeGame.java
package SnakeGame;
import javax.swing.*;
public class SnakeGame
{
public static void main( String[] args )
{
JDialog.setDefaultLookAndFeelDecorated( true );
GameFrame temp = new GameFrame();
}
}
Snake.java
package SnakeGame;
import java.awt.*;
import java.util.*;
class Snake extends LinkedList
{
public int snakeDirection = 2;
public int snakeReDirection = 4;
public Snake()
{
this.add( new Point( 3, 3 ) );
this.add( new Point( 4, 3 ) );
this.add( new Point( 5, 3 ) );
this.add( new Point( 6, 3 ) );
this.add( new Point( 7, 3 ) );
this.add( new Point( 8, 3 ) );
this.add( new Point( 9, 3 ) );
this.add( new Point( 10, 3 ) );
}
public void changeDirection( Point temp, int direction )
{
this.snakeDirection = direction;
switch( direction )
{
case 1://up
this.snakeReDirection = 3;
this.add( new Point( temp.x, temp.y - 1 ) );
break;
case 2://right
this.snakeReDirection = 4;
this.add( new Point( temp.x + 1, temp.y ) );
break;
case 3://down
this.snakeReDirection = 1;
this.add( new Point( temp.x, temp.y + 1 ) );
break;
case 4://left
this.snakeReDirection = 2;
this.add( new Point( temp.x - 1, temp.y ) );
break;
}
}
public boolean checkBeanIn( Point bean )
{
Point temp = (Point) this.getLast();
if( temp.equals( bean ) )
{
return true;
}
return false;
}
public void removeTail()
{
this.remove( 0 );
}
public void drawSnake( Graphics g, int singleWidthX, int singleHeightY, int cooPos )
{
g.setColor( ColorGroup.COLOR_SNAKE );
Iterator snakeSq = this.iterator();
while ( snakeSq.hasNext() )
{
Point tempPoint = (Point)snakeSq.next();
this.drawSnakePiece( g, tempPoint.x, tempPoint.y,
singleWidthX, singleHeightY, cooPos );
}
}
public void drawSnakePiece( Graphics g, int temp1, int temp2,
int singleWidthX, int singleHeightY, int cooPos )
{
g.fillRoundRect( singleWidthX * temp1 + 1,
singleHeightY * temp2 + 1,
singleWidthX - 2,
singleHeightY - 2,
cooPos,
cooPos );
}
public void clearEndSnakePiece( Graphics g, int temp1, int temp2,
int singleWidthX, int singleHeightY, int cooPos )
{
g.setColor( ColorGroup.COLOR_BACK );
g.fillRoundRect( singleWidthX * temp1 + 1,
singleHeightY * temp2 + 1,
singleWidthX - 2,
singleHeightY - 2,
cooPos,
cooPos );
}
}
GameFrame.java
package SnakeGame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class GameFrame extends JFrame
{
private Toolkit tempKit;
private int horizontalGrid, verticalGrid;
private int singleWidthX, singleHeightY;
private int cooPos;
private Snake mainSnake;
private LinkedList eatedBean;
{
eatedBean = new LinkedList();
}
private Iterator snakeSq;
public javax.swing.Timer snakeTimer;
private int direction = 2;
private int score;
private String info;
private Point bean, eatBean;
{
bean = new Point();
}
pr
ivate boolean flag;
private JMenuBar infoMenu;
private JMenu[] tempMenu;
private JMenuItem[] tempMenuItem;
private JRadioButtonMenuItem[] levelMenuItem, versionMenuItem;
private JLabel scoreLabel;
{
scoreLabel = new JLabel();
}
private Graphics2D g;
private ImageIcon snakeHead;
{
snakeHead = new ImageIcon( "LOGO.gif" );
}
private ConfigMenu configMenu;
private boolean hasStoped = true;
public GameFrame()
{
this.tempKit = this.getToolkit();
this.setSize( tempKit.getScreenSize() );
this.setGrid( 60, 40, 5 );
this.getCo