首页 > 编程知识 正文

贪吃蛇最简单代码,c语言贪吃蛇最简单代码50行

时间:2023-05-04 04:22:20 阅读:16297 作者:1094

由于此地板涉嫌违规,因此它将折叠在系统中以隐藏此地板并显示此地板

import javax.swing.*;

import java.awt.*;

import Java.awt.event.key adapter;

import java.awt.event.KeyEvent;

import java.util.LinkedList; //*

公共类snake game {

静态文件int width=20,HEIGHT=5;

staticchartmdgktmdgkmap=new char [ height ] [ width ];

publicstaticvoidmain (stringtmdgkargs ) {

snakeGame.initBackground (; //初始化背景,放入虫子

snakeLine.initSnake (; //初始化蛇

snake game.putsnakeinmap (snake line );

snakeGame.show (; //显示一下

控制. set bounds (900,500,100,100 );

控制. set resizable (假;

控制. set visible (true;

控制. addkey监听器(new key adapter ) )。

@Override

公共语音密钥预置(密钥事件e ) {

sitch(e.getkeycode ) ) ) ) )。

case KeyEvent.VK_UP:

snake line.direction=snake line.up;

布雷克;

case KeyEvent.VK_DOWN:

snake line.direction=snake line.down;

布雷克;

case KeyEvent.VK_LEFT:

snake line.direction=snake line.left;

布雷克;

case KeyEvent.VK_RIGHT:

snake line.direction=snake line.right;

布雷克;

默认:

布雷克;

}

int result=snakeLine.move (;

if(result==-1 ) {

snake game.putgameoverinmap (snake line.snake points.size ) );

snakeGame.show (;

}

snake game.putsnakeinmap (snake line );

snakeGame.show (;

}

);

}

//用文字画背景

私密void init后台(

for(intI=0; i HEIGHT; I () /外围控制线

for(intj=0; j WIDTH; j ()//内循环控制各行的第几个

this.map [ I ] [ j ]=(j==0| (j==width-1 )|I==0||(I==height-1 ) )? ' O' : ';

}

}

}

//显示背景

公共void show () }

int height=map.length;

int width=map[0].length;

for(intI=0; i height; I ) {

for(intj=0; j width; j ) {

}

}

}

//添加到地图

voidputsnakeinmap (snakelinesnakeline ) {

Point p;

this.initBackground (;

map [ snake line.food.y ] [ snake line.food.x ]=snake line.worm;

for(intI=0; i snakeLine.snakePoints.size (; I ) {

p=snakeline.snakepoints.get(I;

if (p.y0p.y height-1p.x0p.x width-1 ) {

map[p.y][p.x]=(i==0)? snake line.head : snake line.body;

} else {

putgameoverinmap (snake line.snake points.size );

}

}

}

语音识别器(int points ) {

chartmdgkgameover=(game over score : ((points-3 ) *10 ).toCharArray ); //这里有18个字,吞噬蛇的地图宽度WIDTH不能小于20

for(intI=0; i gameOver.length; I ) {

map [ height/2-1 ] [ I ] [ width-game over.length ]/2 ]=game over [ I ];

}

show (;

}

}class SnakeLine {

静态final int right=0,DOWN=1,LEFT=2,UP=3;

静态文件头=',body='0',worm='* '; //头部和身体的表示

int direction;

staticpointfood=newpoint((int ) ) Math.random ) ) * (SnakeGame.WIDTH - 2 ) ) 1,(int ) ) Math.random ) )

私密void新福克斯

int count=0;

food=newpoint((int ) Math.random ) * ) * (SnakeGame.WIDTH - 2 ) 1,() int ) (Math.random ) * (SnakeGame )

. HEIGHT - 2 ()1);

if(snakepoints.contains(food ) ) if ) count10 ) {System.out.println (你赢了,小虫子无处可藏) ); 返回; }else {count; 新福克斯(; }

}

void initSnake (

point head=new point (snake game.width/2,SnakeGame.HEIGHT/2 );

snakepoints.addfirst(head; //头

snakepoints.addlast(newpoint ) head.x-1,head.y );

snakepoints.addlast(newpoint ) head.x-2,head.y );

}

int move ()。

Point head=snakePoints.getFirst (;

点新头=null;

交换机(方向) {

case RIGHT:

新头=新点(head.y,head.y );

布雷克;

case LEFT:

新头=新点(head.x-1,head.y );

布雷克;

case DOWN:

newhead=newpoint(head.x,head.y 1);

布雷克;

case UP:

新头=新点(head.x,head.y - 1 );

布雷克;

}

if (snake points.contains (new head ) )。

返回- 1; //咬住了自己

}

snakepoints.addfirst(newhead );

我吃了if(newhead.equals(food ) )//食物

新福克斯(;

返回2;

}

snakePoints.removeLast (;

返回1;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。