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

📄 贪吃蛇.txt

📁 /* *可以本机单打,本机双打,联机双打 *用户一的键盘控制为:up= key_up down= key_down left = key_left right = key_right * pause
💻 TXT
📖 第 1 页 / 共 3 页
字号:
public SingleFrame singleframe; 
public MyActionListener(SingleFrame sf) { 
this.singleframe = sf; 
} 
public void actionPerformed(ActionEvent event) { 
if (event.getSource() == newGameMenuItem) { 
singleframe.multibabypanel.user1.newGame(); 
} 
else 
if (event.getSource() == pauseGameMenuItem) { 
singleframe.multibabypanel.user1.runFlag = !singleframe.multibabypanel.user1.runFlag; 
} 
else 
if (event.getSource() == exitMenuItem) { 
singleframe.dispose(); 
} 
} 
} 
} 

////////////////////////////////////////////////////////////// 


class MultiFrame extends JFrame { 
MultiBabyPanel multibabypanel; 
public static final int WIDTH = 700; 
public static final int HEIGHT = 400; 

public JMenuBar menubar; 
public JMenu fileMenu; 
public JMenuItem newGameMenuItem; 
public JMenuItem exitMenuItem; 
public JMenuItem pauseGameMenuItem; 
public MultiFrame() { 

//Container c = this.getContentPane(); 
multibabypanel = new MultiBabyPanel(2); 
//c.add(multibabypanel); 
//babyframe.setVisible(false); 
//this.setVisible(true); 
this.setSize(700,400); 
this.setTitle("贪食蛇=======本机双打"); 
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
setLocation((int)(screenSize.getWidth()/2 - WIDTH/2),(int)(screenSize.getHeight()/2 - HEIGHT/2)); 
this.setResizable(false); 
menubar = new JMenuBar(); 

fileMenu = new JMenu("File"); 
fileMenu.setMnemonic(′F′); 

newGameMenuItem = new JMenuItem("New",′N′); 
newGameMenuItem.addActionListener(new MyActionListener(this)); 
pauseGameMenuItem = new JMenuItem("Pause",′P′); 
pauseGameMenuItem.addActionListener(new MyActionListener(this)); 

exitMenuItem = new JMenuItem("Exit",′X′); 
exitMenuItem.addActionListener(new MyActionListener(this)); 


fileMenu.add(newGameMenuItem); 
fileMenu.add(pauseGameMenuItem); 
fileMenu.add(exitMenuItem); 
menubar.add(fileMenu); 
setJMenuBar(menubar); 
Container c = this.getContentPane(); 
c.add(multibabypanel); 
} 

private class MyActionListener implements ActionListener { 
public MultiFrame multiframe; 
public MyActionListener(MultiFrame mf) { 
this.multiframe = mf; 
} 
public void actionPerformed(ActionEvent event) { 
if (event.getSource() == newGameMenuItem) { 
multiframe.multibabypanel.user1.newGame(); 
multiframe.multibabypanel.user2.newGame(); 
} 
else 
if (event.getSource() == pauseGameMenuItem) { 
multiframe.multibabypanel.user1.runFlag = !multiframe.multibabypanel.user1.runFlag; 
multiframe.multibabypanel.user2.runFlag = !multiframe.multibabypanel.user2.runFlag; 
} 
else 
if (event.getSource() == exitMenuItem) { 
multiframe.dispose(); 
} 
} 
} 
} 

class MultiBabyPanel extends JPanel implements Runnable{ 

User user1,user2; 
public Thread thread; 
public int userNum; 
public Random random; 
public int color_choose = 0; 


public MultiBabyPanel(int userNum) { 
random = new Random(100); 
this.userNum = userNum; 
user1 = new User(KeyEvent.VK_UP,KeyEvent.VK_DOWN,KeyEvent.VK_LEFT,KeyEvent.VK_RIGHT,KeyEvent.VK_SPACE,KeyEvent.VK_R,280,280,0,0); 
myKeyListenerUser1 keyListener_user1 = new myKeyListenerUser1(); 
addKeyListener(keyListener_user1); 
if (userNum == 2) { 
System.out.println("User2 inited...."); 
user2 = new User(KeyEvent.VK_W,KeyEvent.VK_S,KeyEvent.VK_A,KeyEvent.VK_D,KeyEvent.VK_1,KeyEvent.VK_2,640,280,360,0); 
myKeyListenerUser2 keyListener_user2 = new myKeyListenerUser2(); 
addKeyListener(keyListener_user2); 
} 



thread = new Thread(this); 
thread.start(); 

} 

public boolean isFocusTraversable() { 
return true; 
} 

public void run() { 
while (true) { 
user1.goOne(); 
if (userNum == 2) user2.goOne(); 
try { 
thread.sleep(5); 
}catch (InterruptedException e) { } 
repaint(); 
} 
} 

private class myKeyListenerUser1 implements KeyListener { 
public void myKeyListenr() {} 
public void keyPressed(KeyEvent ke) { 
user1.doMessage(ke.getKeyCode()); 
} 
public void keyReleased(KeyEvent ke) {} 
public void keyTyped (KeyEvent ke) {} 
} 



///////////////keyListener for user2//////////////////////////////// 
private class myKeyListenerUser2 implements KeyListener { 
public void myKeyListenr() {} 
public void keyPressed(KeyEvent ke) { 
user2.doMessage(ke.getKeyCode()); 
} 

public void keyReleased(KeyEvent ke) {} 
public void keyTyped (KeyEvent ke) {} 
} 



public void paintComponent(Graphics g) 
{ 
super.paintComponent(g); 

g.setColor(Color.black); 

if (userNum == 2) { 
g.fill3DRect(user2.panelx+10,user2.panely+10,300,300,false); 
g.setColor(Color.white); 
g.fill3DRect(user2.panelx+20,user2.panely+20,280,280,true); 
g.setColor(Color.BLACK); 
g.drawRect(user2.panelx+10,user2.panely+320,70,19); 
g.fillRect(user2.panelx+12,user2.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Score : " + (user2.babyCount - 6),user2.panelx+17,user2.panely+334); 
g.setColor(Color.BLACK); 
g.drawRect(user2.panelx+241,user2.panely+320,70,19); 
g.fillRect(user2.panelx+243,user2.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Level : " + (10-user2.sleepTime),user2.panelx+252,user2.panely+334); 
} 

g.setColor(Color.black); 
g.fill3DRect(user1.panelx+10,user1.panely+10,300,300,false); 
g.setColor(Color.white); 
g.fill3DRect(user1.panelx+20,user1.panely+20,280,280,true); 
g.setColor(Color.BLACK); 
g.drawRect(user1.panelx+10,user1.panely+320,70,19); 
g.fillRect(user1.panelx+12,user1.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Score : " + (user1.babyCount - 6),user1.panelx+17,user1.panely+334); 
g.setColor(Color.BLACK); 
g.drawRect(user1.panelx+241,user1.panely+320,70,19); 
g.fillRect(user1.panelx+243,user1.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Level : " + (10-user1.sleepTime),user1.panelx+252,user1.panely+334); 


///////////////////////////if user2 exist then draw user2////////////////// 
if (userNum == 2) { 
//显示图像 
for (int i = 0; i < user2.Baby.size(); i++) { 


//得到图像位置 
int x = (int)((Point)user2.Baby.get(i)).getX(); 
int y = (int)((Point)user2.Baby.get(i)).getY(); 
//g.drawRect(x+1,y +1,18,18); 
g.setColor((Color)user2.BabyColor.get(i)); 
g.fill3DRect(x+1,y+1,18,18,true); 
} 
g.setColor(Color.MAGENTA); 
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.MAGENTA); 
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 NetMultiBabyPanel extends JPanel implements Runnable{ 

public User user1,user2; 
public Thread thread; 
boolean is_serverFlag; 
public BufferedReader in; 
public PrintWriter out; 
public String message_temp; 
public int message; 
public ServerSocket serversocket; 
public Socket socket,socket_on_server; 
public InetAddress a; 
public int PORT=9999; 
public String IP; 
public boolean isConected; 


public NetMultiBabyPanel(String ip,int port) { 
this.is_serverFlag = false; 
isConected = false; 
this.IP = ip; 
this.PORT = port; 

user1 = new User(KeyEvent.VK_UP,KeyEvent.VK_DOWN,KeyEvent.VK_LEFT,KeyEvent.VK_RIGHT,KeyEvent.VK_SPACE,KeyEvent.VK_R,280,280,0,0); 
user2 = new User(KeyEvent.VK_W,KeyEvent.VK_S,KeyEvent.VK_A,KeyEvent.VK_D,KeyEvent.VK_1,KeyEvent.VK_2,640,280,360,0); 


myKeyListenerUser1 keyListenerUser1 = new myKeyListenerUser1(); 
myKeyListenerUser2 keyListenerUser2 = new myKeyListenerUser2(); 

try { 
InetAddress a = InetAddress.getByName(IP); 
socket = new Socket(a,PORT); 
in = 
new BufferedReader(new InputStreamReader(socket.getInputStream())); 
out = 
new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))); 
}catch(IOException e) {} 

addKeyListener(keyListenerUser2); 
System.out.println("keyListenerUser2"); 

System.out.println("addListener"); 
thread = new Thread(this); 
} 




/////////////////////////////////////////////////////////////////////////////// 


public NetMultiBabyPanel(int port) { 
this.PORT = port; 
this.is_serverFlag = true; 
isConected = false; 

user1 = new User(KeyEvent.VK_UP,KeyEvent.VK_DOWN,KeyEvent.VK_LEFT,KeyEvent.VK_RIGHT,KeyEvent.VK_SPACE,KeyEvent.VK_R,280,280,0,0); 
user2 = new User(KeyEvent.VK_W,KeyEvent.VK_S,KeyEvent.VK_A,KeyEvent.VK_D,KeyEvent.VK_1,KeyEvent.VK_2,640,280,360,0); 


myKeyListenerUser1 keyListenerUser1 = new myKeyListenerUser1(); 
myKeyListenerUser2 keyListenerUser2 = new myKeyListenerUser2(); 

try { 
serversocket = new ServerSocket(PORT); 
}catch (IOException e) {} 
System.out.println("Server inited!"); 
new MyThread().start(); 

addKeyListener(keyListenerUser1); 
System.out.println("keyListenerUser1"); 
thread = new Thread(this); 
} 


class MyThread extends Thread { 
MyThread() { 
} 
public void run() { 

try { 
socket_on_server = serversocket.accept(); 
in = new BufferedReader( 
new InputStreamReader( 
socket_on_server.getInputStream())); 
System.out.println("In inited"); 
out = new PrintWriter( 
new BufferedWriter( 
new OutputStreamWriter( 
socket_on_server.getOutputStream()))); 
isConected = true; 
System.out.println("Out inited"); 
}catch(IOException e) {} 
} 

} 

public boolean isFocusTraversable() { 
return true; 
} 


public void run() { 
while (true) { 
if (is_serverFlag) { 
if (isConected) { 
try { 
user1.goOne(); 
out.println("Go"); 
out.flush(); 
message_temp = in.readLine(); 
if (message_temp.startsWith("Go")) { 
user2.goOne(); 
} 
else { 
message = Integer.parseInt(message_temp); 
user2.doMessage(message); 
} 
}catch (IOException e) {} 
} 
} 
else { 

try { 
out.println("Go"); 
out.flush(); 
user2.goOne(); 

//System.out.println("Listening...."); 
message_temp =in.readLine(); 

if (message_temp.startsWith("Go")) { 
user1.goOne(); 
} 
else 
{ 
message = Integer.parseInt(message_temp); 
user1.doMessage(message); 
} 
}catch (IOException e) {} 
} 

repaint(); 
try { 
thread.sleep(5); 
}catch(InterruptedException e ) { 

} 

} 
} 


//////////////////////keyListener for user1//////////////////////////////// 
private class myKeyListenerUser1 implements KeyListener { 
public void myKeyListenrUser1() {} 
public void keyPressed(KeyEvent ke) { 
user1.doMessage(ke.getKeyCode()); 
out.println(ke.getKeyCode()); 
out.flush(); 
} 

public void keyReleased(KeyEvent ke) {} 
public void keyTyped (KeyEvent ke) {} 
} 

//////////////////////keyListener for user2//////////////////////////////// 
private class myKeyListenerUser2 implements KeyListener { 
public void myKeyListenrUser2() {} 
public void keyPressed(KeyEvent ke) { 
user2.doMessage(ke.getKeyCode()); 
out.println(ke.getKeyCode()); 
out.flush(); 
} 
public void keyReleased(KeyEvent ke) {} 
public void keyTyped (KeyEvent ke) {} 
} 


//////////////////////override the paint method//////////////////////////// 
public void paintComponent(Graphics g) 
{ 
super.paintComponent(g); 
//System.out.println("paintComponent....."); 
g.setColor(Color.black); 
g.fill3DRect(user2.panelx+10,user2.panely+10,300,300,false); 
g.setColor(Color.white); 
g.fill3DRect(user2.panelx+20,user2.panely+20,280,280,true); 
g.setColor(Color.BLACK); 
g.drawRect(user2.panelx+10,user2.panely+320,70,19); 
g.fillRect(user2.panelx+12,user2.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Score : " + (user2.babyCount - 6),user2.panelx+17,user2.panely+334); 
g.setColor(Color.BLACK); 
g.drawRect(user2.panelx+241,user2.panely+320,70,19); 
g.fillRect(user2.panelx+243,user2.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Level : " + (10-user2.sleepTime),user2.panelx+252,user2.panely+334); 


g.setColor(Color.black); 
g.fillRect(user1.panelx+10,user1.panely+10,300,300); 
g.setColor(Color.white); 
g.fillRect(user1.panelx+20,user1.panely+20,280,280); 
g.setColor(Color.BLACK); 
g.drawRect(user1.panelx+10,user1.panely+320,70,19); 
g.fillRect(user1.panelx+12,user1.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Score : " + (user1.babyCount - 6),user1.panelx+17,user1.panely+334); 
g.setColor(Color.BLACK); 
g.drawRect(user1.panelx+241,user1.panely+320,70,19); 
g.fillRect(user1.panelx+243,user1.panely+322,67,16); 
g.setColor(Color.WHITE); 
g.drawString("Level : " + (10-user1.sleepTime),user1.panelx+252,user1.panely+334); 


g.setColor(Color.blue); 

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


//得到图像位置 
int x = (int)((Point)user2.Baby.get(i)).getX(); 
int y = (int)((Point)user2.Baby.get(i)).getY(); 
//g.drawRect(x+1,y +1,18,18); 
g.setColor((Color)user2.BabyColor.get(i)); 
g.fill3DRect(x+1,y+1,18,18,true); 
} 
g.setColor(Color.MAGENTA); 

⌨️ 快捷键说明

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