爪哇双蛇
/*这是两个人的贪吃蛇游戏。
*玩家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){
}
}