public class Snakylines {ide
int[][] wall;//定義遊戲底板
int width;//底板寬度
int height;//底板長度
int[][] snake;//蛇身點的集合
int length;//蛇身長度this
//定義底板的長跟寬,初始化每一個點爲0遊戲
public void defineWall(int width,int height){
this.width = width;
this.height = height;
wall = new int[height][width];
for(int i=0;i<height;i++){
for(int j=0;j<width;j++)
wall[i][j] = 0;
}
}
it
//定義蛇身長度的橫座標跟縱座標
public void defineSnakeLength(int co_X,int co_Y,int length){
this.length = length;
snake = new int[length][2];
for(int i=0;i<length;i++){
snake[i][0] = co_X; //蛇身點橫座標
snake[i][1] = co_Y + i;//蛇身點縱座標
wall[co_X][i+co_Y] = 1;//將蛇身添加到牆內
}
}
class
//顯示遊戲失敗的緣由
public void showResult(){
for(int i=0;i<this.height;i++){
for(int j=0;j<this.width;j++)
System.out.print(" "+wall[i][j]);
System.out.println();
}
}
command
//主方法
public static void main(String[] args) {
Snakylines sl = new Snakylines();
sl.defineWall(20, 20);
sl.defineSnakeLength(5,6,10);
String key = "";
boolean flag = false;
while(true){
System.out.println("Please inter the command:");
key = new Scanner(System.in).nextLine();
String[] keyitem = key.split("");//接受輸入的命令
if(keyitem!=null){
for(int i=1;i<keyitem.length;i++){
key = keyitem[i];
if(key.equals("W")){//上移
if(sl.upMove())
break;
}else if(key.equals("S")){//右移
if(sl.downMove())
break;
}else if(key.equals("A")){//左移
if(sl.leftMove())
break;
}else if(key.equals("D")){//下移
if(sl.rightMove())
break;
}else if(key.equals("Q")){//退出
flag = true;
break;
}else if(key.equals("V")){//查看
sl.showResult();
}else{
System.out.println("The commond of "+key+" is error!");
}
}
}
if(flag) break;
}
}
public boolean upMove(){
boolean flag = false;
if(wall[snake[0][0]-1][snake[0][1]]==1){//蛇碰到自身,遊戲結束
showResult();
System.out.println("game over!");
flag = true;
}else{
snakePointMove();//蛇身點的集合日後移動,去掉末尾點的值
wall[snake[0][0]-1][snake[0][1]] = 1;
snake[0][0] -= 1;//將蛇身第一個點的橫座標賦予新值
if(snake[0][0] == 0){//若是蛇頭撞牆,遊戲結束
showResult();
System.out.println("game over!");
flag = true;
}
}
return flag;
}
public boolean downMove(){
boolean flag = false;
if(wall[snake[0][0]+1][snake[0][1]]==1){
showResult();
System.out.println("game over!");
flag = true;
}else{
snakePointMove();
wall[snake[0][0]+1][snake[0][1]] = 1;
snake[0][0] += 1;
if(snake[0][0] == this.height-1){
showResult();
System.out.println("game over!");
flag = true;
}
}
return flag;
}
public boolean leftMove(){
boolean flag = false;
if(wall[snake[0][0]][snake[0][1]-1]==1){
showResult();
System.out.println("game over!");
flag = true;
}else{
snakePointMove();
wall[snake[0][0]][snake[0][1]-1] = 1;
snake[0][1] -= 1;
if(snake[0][1]== 0){
showResult();
System.out.println("game over!");
flag = true;
}
}
return flag;
}
public boolean rightMove(){
boolean flag = false;
if(wall[snake[0][0]][snake[0][1]+1]==1){
showResult();
System.out.println("game over!");
flag = true;
}else{
snakePointMove();
wall[snake[0][0]][snake[0][1]+1] = 1;
snake[0][1] += 1;
if(snake[0][1] == this.width-1){
showResult();
System.out.println("game over!");
flag = true;
}
}
return flag;
}
public void snakePointMove(){
wall[snake[this.length-1][0]][snake[this.length-1][1]] = 0;
for(int i=this.length-1;i>0;i--){
snake[i][0] = snake[i-1][0];
snake[i][1] = snake[i-1][1];
}
}方法
}error