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

📄 greedsnake.java

📁 双人网络贪吃蛇 java课程设计
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class GreedSnake extends WindowAdapter implements KeyListener,ActionListener{
MenuBar mb1;
Menu mf1,me1,mh1,md1;
Menu mo1;
CheckboxMenuItem cbmi1;
Dialog d;
JFrame mainFrame;
JPanel centerpanel,northpanel;
Canvas paintCanvas1,paintCanvas2;
Label dia;
JLabel labelScore,labelScore2;//计分牌
SnakeModel snakeModel=null;// 蛇
SnakeModel2 snakeModel2=null;// 蛇
ServerDemol2 s2=new ServerDemol2 ();
public static final int canvasWidth=300;
public static final int canvasHeight=400;
public static final int nodeWidth=10;
public static final int nodeHeight=10;
public GreedSnake()
{
//设置界面元素
mainFrame=new JFrame("GreedSnake");
mainFrame.setBackground(Color.lightGray);
centerpanel=new JPanel();
northpanel=new JPanel();
Container cp=mainFrame.getContentPane();
labelScore=new JLabel("Score:");
labelScore2=new JLabel("Score:");
cp.add(centerpanel,BorderLayout.CENTER);
northpanel.setLayout(new GridLayout(1,2,0,10));
cp.add(northpanel,BorderLayout.NORTH);
northpanel.add(labelScore);
northpanel.add(labelScore2);
paintCanvas1=new Canvas();
paintCanvas2=new Canvas();
paintCanvas1.setBackground(Color.WHITE);
paintCanvas2.setBackground(Color.WHITE);
paintCanvas1.setSize(canvasWidth+1,canvasHeight+1);
paintCanvas1.addKeyListener(this);
paintCanvas2.setSize(canvasWidth+1,canvasHeight+1);
//paintCanvas2.addKeyListener(this);
centerpanel.setLayout(new GridLayout(1,2,10,0));
centerpanel.add(paintCanvas1);
centerpanel.add(paintCanvas2);
JPanel panelButtom=new JPanel();
panelButtom.setLayout(new BorderLayout());
JLabel labelHelp;// 帮助信息
labelHelp=new JLabel("PageUp, PageDown 增加(减少)速度;",JLabel.CENTER);
panelButtom.add(labelHelp,BorderLayout.NORTH);
labelHelp=new JLabel("ENTER or R or S 开始;",JLabel.CENTER);
panelButtom.add(labelHelp,BorderLayout.CENTER);
labelHelp=new JLabel("SPACE or P 停止",JLabel.CENTER);
panelButtom.add(labelHelp,BorderLayout.SOUTH);
d=new Dialog(mainFrame,"HELP",true);
d.add(panelButtom);
d.setSize(250,250);
d.setLocation(300,300);
d.addWindowListener(this);
showMenu();
mainFrame.addKeyListener(this);
mainFrame.pack();
mainFrame.setResizable(false);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
//添加菜单
public void showMenu()
{
	mb1=new MenuBar();
	mainFrame.setMenuBar(mb1);
	mo1=new Menu("选项");
	mb1.add(mo1);
	mo1.add(new MenuItem("开始"));
	mo1.addSeparator();
	mo1.add(new MenuItem("暂停"));
	mo1.addSeparator();
	mo1.add(new MenuItem("退出"));
  mo1.addSeparator();
	mo1.add(new MenuItem("帮助"));
	mo1.addActionListener(this);
}
//添加菜单事件
public void actionPerformed(ActionEvent e)
{  
	if(e.getActionCommand()=="开始")
	begin();
	if(e.getActionCommand()=="退出")
	System.exit(0);
	if(e.getActionCommand()=="帮助")
	d.setVisible(true);
	if(e.getActionCommand()=="暂停")
	{
		snakeModel.paused=true;
		snakeModel2.paused=true;
  }
}
//添加帮助菜单事件
public void windowClosing(WindowEvent e)
{
	if(e.getSource()==d)
	d.setVisible(false);
	else
	System.exit(0);
}
//keyPressed():按键检测
public void keyPressed(KeyEvent e)
{String cl;
int keyCode=e.getKeyCode();
if(snakeModel.running) switch(keyCode)
{
case KeyEvent.VK_UP:
snakeModel.changeDirection(SnakeModel.UP);
cl="1";
try{ClientDemo1 b=new ClientDemo1();
       b.jieshou(cl);}
catch(Exception j){}
break;
case KeyEvent.VK_DOWN:
snakeModel.changeDirection(SnakeModel.DOWN);
cl="2";
try{ClientDemo1 b=new ClientDemo1();
       b.jieshou(cl);}
catch(Exception j){}
break;
case KeyEvent.VK_LEFT:
snakeModel.changeDirection(SnakeModel.LEFT);
cl="3";
try{ClientDemo1 b=new ClientDemo1(); 
       b.jieshou(cl);}
catch(Exception j){}
break;
case KeyEvent.VK_RIGHT:
snakeModel.changeDirection(SnakeModel.RIGHT);
cl="4";
try{ClientDemo1 b=new ClientDemo1();
       b.jieshou(cl);}
catch(Exception j){}
break;
default:
}
//重新开始
if(keyCode==KeyEvent.VK_R || keyCode==KeyEvent.VK_S
|| keyCode==KeyEvent.VK_ENTER)
{
snakeModel.running=false;
snakeModel2.running=false;
begin();
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
//----------------------------------------------------------------------
//repaint():绘制游戏界面(包括蛇和食物)
//----------------------------------------------------------------------
void repaint1()
{
Graphics g=paintCanvas1.getGraphics();
//draw background
g.setColor(Color.WHITE);
g.fillRect(0,0,canvasWidth,canvasHeight);
//draw the snake
g.setColor(Color.BLACK);
LinkedList na=snakeModel.nodeArray;
Iterator it=na.iterator();
while(it.hasNext())
{
Node n=(Node)it.next();
drawNode(g,n);
}
// draw the food
g.setColor(Color.RED);
Node n=snakeModel.food;
drawNode(g,n);
updateScore();
}
void repaint2()
{
Graphics s=paintCanvas2.getGraphics();
//draw background
s.setColor(Color.WHITE);
s.fillRect(0,0,canvasWidth,canvasHeight);
//draw the snake
s.setColor(Color.BLACK);
LinkedList na2=snakeModel2.nodeArray;
Iterator it2=na2.iterator();
while(it2.hasNext())
{
Node n2=(Node)it2.next();
drawNode(s,n2);
}
// draw the food
s.setColor(Color.RED);
Node n2=snakeModel2.food;
drawNode(s,n2);
updateScore();
}
//----------------------------------------------------------------------
//drawNode():绘画某一结点(蛇身或食物)
//----------------------------------------------------------------------
private void drawNode(Graphics g,Node h)
{
g.fillRect(h.x*nodeWidth,h.y*nodeHeight,nodeWidth-1,nodeHeight-1);
}
//----------------------------------------------------------------------
//updateScore():改变计分牌
//----------------------------------------------------------------------
public void updateScore()
{
String s="Score: "+snakeModel.score;
String s2="Score: "+snakeModel2.score;
labelScore.setText(s);
labelScore2.setText(s2);
}
//----------------------------------------------------------------------
//begin():游戏开始,放置贪吃蛇
//----------------------------------------------------------------------
void begin()
{
if(snakeModel==null||!snakeModel.running)
{
snakeModel=new SnakeModel(this,canvasWidth/nodeWidth,
this.canvasHeight/nodeHeight);
(new Thread(snakeModel)).start();
}
if(snakeModel2==null||!snakeModel2.running)
{
snakeModel2=new SnakeModel2(this,canvasWidth/nodeWidth,
this.canvasHeight/nodeHeight);
(new Thread(snakeModel2)).start();
}
try{
s2.fasong(snakeModel2);
}
catch(Exception j){}
finally{
(new Thread(s2)).start();}
}
//----------------------------------------------------------------------
//main():主函数
//----------------------------------------------------------------------

	public static void main(String args[])
	{
		GreedSnake snake=new GreedSnake();
		}
	}

⌨️ 快捷键说明

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