爪哇双蛇

包游戏;

/*这是两个人的贪吃蛇游戏。

*玩家A S D W控制方向

*玩家2控制从上到下的方向。

*当玩家别无选择只能输的时候。

*/

导入Java . awt . *;

导入javax . swing . *;

导入Java . awt . event . *;

公共类HsGame扩展JFrame {

HsGame(String字符串){

//设置主面板

this . settitle(str);

this.setSize(910,630);

this.setLocation(50,50);

my panel MP = new my panel();

this . add(MP);

this . addkey listener(MP);

新线程(mp)。start();

}

//主线程

公共静态void main(String[] args) {

HsGame m =新HsGame(《贪吃蛇竞技版》);

m . set visible(true);

}

}

MyPanel类扩展JPanel实现Runnable、KeyListener {

int[][]s 1 = new int[180][120];

int[][]S2 = new int[180][120];

int x 1 = 40;

int y 1 = 60;

int x2 = 140;

int y2 = 60

//设置线程睡眠时间

int sleep = 50

//设置初始方向

int fangxiang 1 = 2;

int fangxiang 2 = 0;

//构造函数

MyPanel() {

//初始化接口

for(int IX = 0;ix & lt180;ix++) {

for(int iy = 0;iy & lt120;iy++) {

s 1[IX][iy]= 0;

S2[IX][iy]= 0;

}

}

//设置边界

//上限和下限

for(int IX = 0;ix & lt180;ix++) {

s 1[IX][0]= 1;

s 1[IX][119]= 1;

S2[IX][0]= 1;

S2[IX][119]= 1;

}

//左右边界

for(int iy = 0;iy & lt120;iy++) {

s 1[0][iy]= 1;

s 1[179][iy]= 1;

S2[0][iy]= 1;

S2[179][iy]= 1;

}

}

//画板

公共空白油漆(图形g) {

//显示玩家一

g . set color(color . red);

for(int IX = 0;ix & lt180;ix++) {

for(int iy = 0;iy & lt120;iy++) {

if (s1[ix][iy] == 1) {

g.fillRect(ix * 5,iy * 5,5,5);

}

}

}

//显示播放器2

g . set color(color . blue);

for(int IX = 0;ix & lt180;ix++) {

for(int iy = 0;iy & lt120;iy++) {

if (s2[ix][iy] == 1) {

g.fillRect(ix * 5,iy * 5,5,5);

}

}

}

//绘制边界

g . set color(color . black);

for(int I = 0;我& lt180;i++) {

g.fillRect(i * 5,0,5,5);

g.fillRect(i * 5,119 * 5,5,5);

}

for(int I = 0;我& lt120;i++) {

g.fillRect(0,i * 5,5,5);

g.fillRect(179 * 5,i * 5,5,5);

}

}

公共无效运行(){

while (true) {

开关(fangxiang1) {

案例0:

x 1-;

打破;

案例1:

y 1-;

打破;

案例二:

x 1++;

打破;

案例三:

y 1++;

}

开关(fangxiang2) {

案例0:

x2-;

打破;

案例1:

y2-;

打破;

案例二:

x2++;

打破;

案例三:

y2++;

}

//判断生死

if(s 1[x 1][y 1]= = 1 | | S2[x 1][y 1]= = 1){

//弹出player2胜利对话框。

JOptionPane.showMessageDialog(空,

“玩家2赢了!”,

“游戏结束!”,JOptionPane。错误_消息);

//结束游戏

system . exit(0);

}否则{

s 1[x 1][y 1]= 1;

}

if(S2[x2][y2]= = 1 | | s 1[x2][y2]= = 1){

//弹出player1胜利对话框。

JOptionPane.showMessageDialog(空,

“玩家1赢!”,

“游戏结束!”,JOptionPane。错误_消息);

//结束游戏

system . exit(0);

}否则{

S2[x2][y2]= 1;

}

尝试{

Thread.sleep(睡眠);

} catch(异常e) {

e . printstacktrace();

}

//重绘

this . repaint();

}

}

公共void键入的(KeyEvent e) {

}

公共void按键(按键事件e) {

//玩家一控制,

if (e.getKeyCode() == 65) {

if (fangxiang1!= 2) {

fangxiang 1 = 0;

System.out.println("玩家1左");

}

}

if (e.getKeyCode() == 87) {

if (fangxiang1!= 3) {

fangxiang 1 = 1;

system . out . println(" player 1 up ");

}

}

if (e.getKeyCode() == 68) {

if (fangxiang1!= 0) {

fangxiang 1 = 2;

System.out.println("玩家1右");

}

}

if (e.getKeyCode() == 83) {

if (fangxiang1!= 1) {

fangxiang 1 = 3;

System.out.println("玩家1 down ");

}

}

//玩家2控制

if (e.getKeyCode() == 37) {

如果(fangxiang2!= 2) {

fangxiang 2 = 0;

System.out.println("玩家2左");

}

}

if (e.getKeyCode() == 38) {

如果(fangxiang2!= 3) {

fangxiang 2 = 1;

system . out . println(" player 2 up ");

}

}

if (e.getKeyCode() == 39) {

如果(fangxiang2!= 0) {

fangxiang2 = 2

System.out.println("玩家2右");

}

}

if (e.getKeyCode() == 40) {

如果(fangxiang2!= 1) {

fangxiang 2 = 3;

System.out.println("玩家2下");

}

}

}

public void key released(key event e){

}

}