⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 贪吃蛇.txt

📁 /* *可以本机单打,本机双打,联机双打 *用户一的键盘控制为:up= key_up down= key_down left = key_left right = key_right * pause
💻 TXT
📖 第 1 页 / 共 3 页
字号:
g.fill3DRect(user2.posx+1,user2.posy+1,18,18,true); 
g.setColor(Color.red); 
if ((user2.runFlag == false)&(user2.gameFlag == true)) g.drawString("PAUSE...",user2.panelx+130,user2.panely+130); 
if (user2.gameFlag == false) g.drawString("Game Over!",user2.panelx+130,user2.panely+130); 


//////////////////////draw user1///////////////////////////////// 

//显示图像 
for (int i = 0; i < user1.Baby.size(); i++) { 


//得到图像位置 
int x = (int)((Point)user1.Baby.get(i)).getX(); 
int y = (int)((Point)user1.Baby.get(i)).getY(); 
//g.drawRect(x+1,y +1,18,18); 
g.setColor((Color)user1.BabyColor.get(i)); 
g.fill3DRect(x+1,y+1,18,18,true); 
} 
g.setColor(Color.green); 
g.fill3DRect(user1.posx+1,user1.posy+1,18,18,true); 
g.setColor(Color.black); 
if ((user1.runFlag == false)&(user1.gameFlag == true)) g.drawString("PAUSE...",user1.panelx+130,user1.panely+130); 
if (user1.gameFlag == false) g.drawString("Game Over!",user1.panelx+130,user1.panely+130); 


} 

} 


class User { 

//public int goOne; 
public int startx,starty,panelx,panely; 
public int key_up,key_down,key_left,key_right,key_pause,key_reset; 

//public Thread thread; 
public ArrayList Baby,BabyDir,BabyRectangle,BabyColor; 
public ArrayList Change,ChangeDir,ChangeCurrent,ChangeTotal; 
public int pic_choose_snake = 2,pic_choose_food = 5; 
public int imageWidth,imageHeight; 

public int x ,y,posx,posy,newx,newy,currentx,currenty,steps,sleepTime; 
public Point pt ,ptadd ,ptlast,ptemp; 

public int dircount = 4,babyCount,turnCount; 
public Random random,random_color; 


public boolean eated,runFlag,gameFlag,drawFlag_snake,drawFlag_food,borderFlag,isSuspend; 
public Rectangle headRect,foodRect,rect1,rect2,rectTemp; 

public Color[] color = {Color.red,Color.green,new Color(3,45,209),new Color(223,100,26),new Color(200,46,13),new Color(190,23,200),new Color(224,171,12),new Color(120,33,180),new Color(69,41,52)}; 

public int color_choose = 0; 


public User(int key_up,int key_down,int key_left,int key_right,int key_pause,int key_reset,int startx,int starty,int panelx,int panely) { 

this.key_up = key_up; 
this.key_down = key_down; 
this.key_left = key_left; 
this.key_right = key_right; 
this.key_pause = key_pause; 
this.key_reset = key_reset; 
this.startx = startx; 
this.starty = starty; 
this.panelx = panelx; 
this.panely = panely; 




isSuspend = false; 
sleepTime = 5; 
babyCount = 6; 
turnCount = 0; 
imageWidth = 20; 
steps = (babyCount - 1) * imageWidth + 1; 
random = new Random(400); 
random_color = new Random(100); 
//pup = new Point(100,100); 
Change = new ArrayList(); 
ChangeDir = new ArrayList(); 
ChangeCurrent = new ArrayList(); 
ChangeTotal = new ArrayList(); 
Baby = new ArrayList(); 
BabyDir = new ArrayList(); 
BabyRectangle = new ArrayList(); 
BabyColor = new ArrayList(); 
eated = true; 
runFlag = true; 
gameFlag = true; 
drawFlag_snake = true; 
drawFlag_food = true; 
borderFlag = true; 
Toolkit kit = Toolkit.getDefaultToolkit(); 

for (int i = 0;i < 6;i++) { 
color_choose = random_color.nextInt(9); 
pt = new Point(startx,starty); 
startx = startx+imageWidth; 
add(pt,3); 
BabyColor.add(color[color_choose]); 
BabyRectangle.add(pt); 
} 
} 



public void add(Point pt,int dir) { 
Baby.add(pt); 
BabyDir.add(new Integer(dir)); 
ptlast = pt; 
} 



public void addNode() { 

int size = Baby.size(); 

int x = (int)((Point)Baby.get(size - 1)).getX(); 
int y = (int)((Point)Baby.get(size - 1)).getY(); 
int newDir = Integer.parseInt((BabyDir.get(size - 1).toString())); 
switch (newDir) { 
case 0: 
y = y + imageWidth; 
break; 
case 1: 
x = x - imageWidth; 
break; 
case 2: 
y = y - imageWidth; 
break; 
case 3: 
x = x + imageWidth; 
break; 
} 

Point newPoint = new Point(x,y); 
BabyRectangle.add(newPoint); 
add(newPoint,newDir); 
color_choose = random_color.nextInt(9); 
BabyColor.add(color[color_choose]); 
ptlast = newPoint; 
babyCount++; 
steps = (babyCount - 1) * imageWidth + 1; 
if (!ChangeTotal.isEmpty()) { 
for(int k = 0;k < ChangeTotal.size();k++) { 
int tempadd = Integer.parseInt(ChangeTotal.get(k).toString()) + imageWidth; 
ChangeTotal.set(k,new Integer(tempadd)); 
}}} 


public void checkGame() { 
if ((((Point)Baby.get(0)).getX() > panelx+300) 
|| (((Point)Baby.get(0)).getY() > panely+300) 
|| (((Point)Baby.get(0)).getX() < panelx+10) 
|| (((Point)Baby.get(0)).getY() < panely+10)) 
gameFlag = false; 

int rectTempx = (int)((Point)BabyRectangle.get(0)).getX(); 
int rectTempy = (int)((Point)BabyRectangle.get(0)).getY(); 
rect1 = new Rectangle(rectTempx,rectTempy,imageWidth - 5,imageWidth - 5); 
for (int rectNum = 3;rectNum < BabyRectangle.size();rectNum++) { 
int rectTempxx = (int)((Point)BabyRectangle.get(rectNum)).getX(); 
int rectTempyy = (int)((Point)BabyRectangle.get(rectNum)).getY(); 
rect2 = new Rectangle(rectTempxx,rectTempyy,imageWidth - 5,imageWidth - 5); 

if (rect1.intersects(rect2)) { 
gameFlag = false; 
return; 
}}} 


public void cut() { 
ChangeCurrent.remove(0); 
ChangeTotal.remove(0); 
Change.remove(0); 
ChangeDir.remove(0); 
} 


public void checkEat() { 
eated = false; 
if (headRect.intersects(foodRect)) { 
eated = true; 
} 
} 


public void checkDir () { 
for (int j = 0; j < Change.size(); j++) { 
for (int i = 1;i < Baby.size(); i++) { 
if (Baby.get(i).equals((Point)(Change.get(j)))) { 
BabyDir.set(i,ChangeDir.get(j)); 
} 
} 
} 
} 

public void food () { 
if (eated == true) { 
posx = panelx+20 + random.nextInt(260); 
posy = panely+20 + random.nextInt(260); 
foodRect = new Rectangle(posx,posy,15,15); 
} 
} 

public void addChangeCurrent() { 
for (int i = 0;i < ChangeCurrent.size();i++) { 
int ttt = Integer.parseInt((ChangeCurrent.get(i).toString())) + 1; 
ChangeCurrent.set(i,new Integer(ttt)); 
} 
} 

public void checkAddChangeCurrent() { 
if (!ChangeCurrent.isEmpty()) { 
if (!ChangeTotal.isEmpty()) { 
int tempCurrent = Integer.parseInt(ChangeCurrent.get(0).toString()); 
int tempTotal = Integer.parseInt(ChangeTotal.get(0).toString()); 
if (tempCurrent == tempTotal) 
cut(); 
else if (tempCurrent > tempTotal) { 
System.out.println("Error"); 
runFlag = false; 
} 
} 
} 
} 

public void go() { 
//System.out.println("go"); 
steps = (babyCount - 1) * imageWidth + 1; 
newx = (int)((Point)Baby.get(0)).getX(); 
newy = (int)((Point)Baby.get(0)).getY(); 
headRect = new Rectangle(newx,newy,15,15); 

for (int i = 0;i < Baby.size(); i++) { 
switch (Integer.parseInt((BabyDir.get(i).toString()))) { 
case 0://向上 
newx = (int)((Point)Baby.get(i)).getX(); 
newy = (int)((Point)Baby.get(i)).getY() - 1; 
ptadd = new Point(newx,newy); 
Baby.set(i,ptadd); 
BabyRectangle.set(i,ptadd); 
break; 

case 1://向右 
newx = (int)((Point)Baby.get(i)).getX() + 1; 
newy = (int)((Point)Baby.get(i)).getY(); 
ptadd = new Point(newx,newy); 
Baby.set(i,ptadd); 
BabyRectangle.set(i,ptadd); 
break; 

case 2://向下 
newx = (int)((Point)Baby.get(i)).getX(); 
newy = (int)((Point)Baby.get(i)).getY() + 1; 
ptadd = new Point(newx,newy); 
Baby.set(i,ptadd); 
BabyRectangle.set(i,ptadd); 
break; 

case 3://向左 
newx = (int)((Point)Baby.get(i)).getX() - 1; 
newy = (int)((Point)Baby.get(i)).getY(); 
ptadd = new Point(newx,newy); 
Baby.set(i,ptadd); 
BabyRectangle.set(i,ptadd); 
break; 
} 
} 
} 

void doMessage(int message) 
{ 
{ 
if (message == key_up) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 0) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 2) { 
BabyDir.set(0,new Integer(0)); 
ptemp = (Point)Baby.get(0); 
Change.add(ptemp); 
ChangeDir.add(new Integer(0)); 
ChangeCurrent.add(new Integer(0)); 
ChangeTotal.add(new Integer(steps)); 
System.out.println("up"); 
}}} 

else 
if (message == key_right) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 1) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 3) { 
BabyDir.set(0,new Integer(1)); 
ptemp = (Point)Baby.get(0); 
Change.add(ptemp); 
ChangeDir.add(new Integer(1)); 
ChangeCurrent.add(new Integer(0)); 
ChangeTotal.add(new Integer(steps)); 
System.out.println("right"); 
}}} 

else 
if (message == key_down) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 2) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 0) { 
BabyDir.set(0,new Integer(2)); 
ptemp = (Point)Baby.get(0); 
Change.add(ptemp); 
ChangeDir.add(new Integer(2)); 
ChangeCurrent.add(new Integer(0)); 
ChangeTotal.add(new Integer(steps)); 
System.out.println("down"); 

}}} 

else 

if (message == key_left) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 3) { 
if (Integer.parseInt((BabyDir.get(0).toString())) != 1) { 
BabyDir.set(0,new Integer(3)); 
ptemp = (Point)Baby.get(0); 
Change.add(ptemp); 
ChangeDir.add(new Integer(3)); 
ChangeCurrent.add(new Integer(0)); 
ChangeTotal.add(new Integer(steps)); 
System.out.println("left"); 
}}} 

/*else if (ke.getKeyChar() == ke.VK_1) { 
if (sleepTime > 1) sleepTime--; 
} 

else if (ke.getKeyChar() == ke.VK_2) sleepTime++; 
*/ 

else 
if (message == key_pause) { 
if (runFlag ) { 
runFlag = !runFlag; 
} 
else { 
runFlag = !runFlag; 
} 
} 

else 
if (message == key_reset) newGame(); 
} 
} 

public void goOne() { 
if (runFlag == true) { 
if (gameFlag == true) { 
food(); 
checkGame(); 
checkDir(); 
go(); 
addChangeCurrent(); 
checkAddChangeCurrent(); 
checkEat(); 
if (eated == true) addNode(); 
} 
} 
} 

public void newGame() { 

sleepTime = 5; 
x = startx; 
y = starty; 
babyCount = 6; 
while (!Baby.isEmpty()) Baby.remove(0); 
while (!BabyDir.isEmpty()) BabyDir.remove(0); 
while (!BabyRectangle.isEmpty()) BabyRectangle.remove(0); 



while (!Change.isEmpty()) Change.remove(0); 
while (!ChangeDir.isEmpty()) ChangeDir.remove(0); 
while (!ChangeCurrent.isEmpty()) ChangeCurrent.remove(0); 
while (!ChangeTotal.isEmpty()) ChangeTotal.remove(0); 

for (int j = 0;j < 6;j++) { 
pt = new Point(x,y); 
x = x+imageWidth; 
add(pt,3); 
BabyRectangle.add(pt); 
eated = true; 
gameFlag = true; 
runFlag = true; 
} 
} 
} 

class AboutDialog extends JPanel { 
private int WIDTH = 310,HEIGHT = 200; 
//public BabyPanel babyPanel; 
public JLabel jl_auther,jl_date,jl_company,jl_qq,jl_email; 
public JButton jb_ok; 
private JDialog dialog; 
public JPanel jp1,jp2; 
public Border border; 
public AboutDialog() { 
//this.babyPanel = babypanel; 
setSize(WIDTH,HEIGHT); 
setLayout(new BorderLayout()); 
jp1 = new JPanel(); 

jp2 = new JPanel(); 
jp1.setLayout(new GridLayout(5,1,10,10)); 
border = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Info"); 
jp1.setBorder(border); 
jl_auther = new JLabel("Auther: 张恩来"); 
jl_date = new JLabel("Date: 2004-11-3"); 
jl_company = new JLabel("Company: 山东济南中创软件"); 
jl_qq = new JLabel("QQ: 36798636"); 
jl_email = new JLabel("E-Mail: zhang_elai@cvicse.com"); 
jb_ok = new JButton("OK"); 
jb_ok.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent ae) { 
setRunFlag(true); 
dialog.setVisible(false); 
} 
}); 
jp1.add(jl_auther); 
jp1.add(jl_date); 
jp1.add(jl_company); 
jp1.add(jl_qq); 
jp1.add(jl_email); 

jp2.add(jb_ok); 

add(jp1,BorderLayout.NORTH); 
add(jp2,BorderLayout.SOUTH); 
} 

public void setRunFlag(boolean flag) { 
//babyPanel.user2.runFlag = flag; 
} 

public void showDialog(Component parent,String title) { 

JFrame owner = null; 
if (parent instanceof JFrame) 
owner = (JFrame) parent; 

if (dialog == null || dialog.getOwner() != owner) { 
owner = null; 
dialog = new JDialog(owner,false); 
dialog.getContentPane().add(this); 
dialog.pack(); 
} 

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
dialog.setLocation((int)(screenSize.getWidth()/2 - WIDTH/2),(int)(screenSize.getHeight()/2 - HEIGHT/2)); 

dialog.setTitle(title); 
dialog.show(); 

} 
} 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -