博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java】控制台实现贪吃蛇小游戏-LinkedList、Scanner
阅读量:5175 次
发布时间:2019-06-13

本文共 4454 字,大约阅读时间需要 14 分钟。

1 package com.myproj.snake; 2  3 public class Node { 4     private int i,j; 5     public Node(){} 6     public Node(int i, int j) { 7         super(); 8         this.i = i; 9         this.j = j;10     }11 12     public int getI() {13         return i;14     }15 16     public void setI(int i) {17         this.i = i;18     }19 20     public int getJ() {21         return j;22     }23 24     public void setJ(int j) {25         this.j = j;26     }27     @Override28     public int hashCode() {29         final int prime = 31;30         int result = 1;31         result = prime * result + i;32         result = prime * result + j;33         return result;34     }35     @Override36     public boolean equals(Object obj) {37         if (this == obj)38             return true;39         if (obj == null)40             return false;41         if (getClass() != obj.getClass())42             return false;43         Node other = (Node) obj;44         if (i != other.i)45             return false;46         if (j != other.j)47             return false;48         return true;49     }50     51 }
Node.java
1 package com.myproj.snake; 2  3 import java.util.LinkedList; 4  5 public class Snake { 6     private LinkedList
nodes=new LinkedList
(); 7 public static final int UP=-5; 8 public static final int DOWN=5; 9 public static final int LEFT=-1;10 public static final int RIGHT=1;11 private int dir;//当前方向;12 public Snake(){13 nodes.add(new Node(3,9));14 nodes.add(new Node(4,9));15 nodes.add(new Node(5,9));16 nodes.add(new Node(5,10));17 nodes.add(new Node(5,11));18 nodes.add(new Node(6,11));19 nodes.add(new Node(7,11));20 this.dir=RIGHT;21 }22 public boolean contains(int i,int j){23 return nodes.contains(new Node(i,j));24 }25 public void move(){26 nodes.removeLast();27 Node head=nodes.getFirst();28 int i=head.getI()+dir/5;29 int j=head.getJ()+dir%5;30 nodes.addFirst(new Node(i,j));31 }32 public void move(int dir){33 if(this.dir+dir==0){34 System.out.println("不能逆向行驶!");35 System.out.println("游戏终止!");36 System.exit(0);37 }38 this.dir=dir;39 move();40 }41 }
Snake.java
1 package com.myproj.snake; 2  3 public class SnakePan { 4     private Snake snake=new Snake(); 5     public Snake getSnake() { 6         return snake; 7     } 8     public void setSnake(Snake snake) { 9         this.snake = snake;10     }11     public void paint(){12         for(int i=0;i<=15;i++){13             for(int j=0;j<=40;j++){14                 if(i==0||i==15){15                     System.out.print("-");16                 }else if(j==0||j==40){17                     System.out.print("|");18                 }else if(snake.contains(i,j)){19                     System.out.print("■");20                 }else{21                     System.out.print(" ");22                 }23             }24             System.out.println();25         }26     }27 }
SnakePan
1 package com.myproj.snake; 2  3 import java.util.Scanner; 4  5 public class SnakeTest { 6     public static void main(String[] args){ 7         SnakePan snakePan=new SnakePan(); 8         Snake snake=snakePan.getSnake(); 9         snakePan.paint();10         /*for(int i=0;i<10;i++){11             snakePan.paint();12             snake.move();13             try {14                 Thread.sleep(1000);15             } catch (InterruptedException e) {16                 // TODO Auto-generated catch block17                 e.printStackTrace();18             }19         }*/20         21         Scanner scanner=new Scanner(System.in);22         System.out.println("请输入方向【上(U)、下(D)、左(L)、右(R)】:");23         while(true){24             String dir=scanner.nextLine();25             if(dir.equalsIgnoreCase("U")){26                 snake.move(snake.UP);27             }else if(dir.equalsIgnoreCase("D")){28                 snake.move(snake.DOWN);29             }else if(dir.equalsIgnoreCase("L")){30                 snake.move(snake.LEFT);31             }else if(dir.equalsIgnoreCase("R")){32                 snake.move(snake.RIGHT);33             }else{34                 System.exit(0);35             }36             snakePan.paint();37         }        38     }39 }
SnakeTest.java

 

转载于:https://www.cnblogs.com/xiongjiawei/p/6613854.html

你可能感兴趣的文章
Linux基础(4)
查看>>
bootStrap实现垂直居中 - bootStrap技巧
查看>>
C#实现局域网文件传输
查看>>
VS2005和VS2008快捷键大全(转)
查看>>
【转】C#根据经纬度请求返回坐标实际地址
查看>>
用JS去掉第一个字符和最后一个字符
查看>>
使用“DiskGenius”精确隐藏硬盘坏道
查看>>
使用PullToRefresh实现下拉刷新和上拉加载
查看>>
网页选项卡的介绍
查看>>
作品第一课----循环改变DIV颜色
查看>>
6、装饰模式
查看>>
Tomcat入门级小白教程
查看>>
CodeForces - 5C Longest Regular Bracket Sequence
查看>>
iPhone开发之 UIAlertView
查看>>
Uva 10635 - Prince and Princess LCS/LIS
查看>>
将子节点的所有父节点ID合并成一个字符串,并更新表
查看>>
Windows 8下任何Windows Store App无法运行(闪退)的解决方案
查看>>
IOS_后台定时器
查看>>
6.初识java异常
查看>>
来来,咱也说说缓存与优化
查看>>