cmd版贪吃蛇_贪吃蛇老版本无敌版

cmd版贪吃蛇_贪吃蛇老版本无敌版importjava.awt.*;importjava.util.LinkedList;importjava.util.Scanner;/***@authoraachen0*@date2018/3/2713:56*IDE:IntelliJIDEA*/publicclassSnakeGame{staticfinalintWIDTH=…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

import java.awt.*; import java.util.LinkedList; import java.util.Scanner; /**  * @author aachen0  * @date 2018/3/27 13:56  * IDE:IntelliJ IDEA  */ public class SnakeGame {  static final int WIDTH = 40, HEIGHT = 10;  static char[][] map = new char[HEIGHT][WIDTH];  public static void main(String[] args) {  SnakeGame snakeGame = new SnakeGame();  snakeGame.initBackground();//初始化背景,放只虫子  SnakeLine snakeLine = new SnakeLine();  snakeLine.initSnake();//初始化一条蛇  snakeGame.putSnakeInMap(snakeLine);  snakeGame.show();//显示一下  //键盘移动蛇进行游戏  Scanner scanner = new Scanner(System.in);  int move;  while (true) {  System.out.println("输入AWSD控制蛇的移动,Q退出游戏");  String choice = scanner.next();  switch (choice) {  case "a":  case "A":  move = 2;  break;  case "s":  case "S":  move = 1;  break;  case "w":  case "W":  move = 3;  break;  case "d":  case "D":  move = 0;  break;  case "q":  case "Q":  int points=snakeLine.snakePoints.size();  snakeGame.putGameOverInMap(points);  default:  System.out.println("输入有误,请重试");  continue;  }  if (snakeLine.move(move) == -1) {  snakeGame.putGameOverInMap(snakeLine.snakePoints.size());  snakeGame.show();  break;  }  snakeGame.putSnakeInMap(snakeLine);  snakeGame.show();  }  }  //用字符画背景  private void initBackground() {  for (int i = 0; i < HEIGHT; i++) { 
   //外围控制行  for (int j = 0; j < WIDTH; j++) { 
   //内循环控制各行的第几个  this.map[i][j] = (j == 0 || (j == WIDTH - 1) || i == 0 || (i == HEIGHT - 1)) ? '*' : ' ';  }  }  }  //显示背景  public void show() {  int height = map.length;  int width = map[0].length;  for (int i = 0; i < height; i++) {  for (int j = 0; j < width; j++) {  System.out.print(map[i][j]);  }  System.out.println();  }  }  //把加到地图  void putSnakeInMap(SnakeLine snakeLine) {  Point p;  this.initBackground();  map[SnakeLine.food.y][SnakeLine.food.x] = SnakeLine.worm;  for (int i = 0; i < snakeLine.snakePoints.size(); i++) {  p = snakeLine.snakePoints.get(i);  if (p.y > 0 && p.y < HEIGHT - 1 && p.x > 0 && p.x < WIDTH - 1) {  map[p.y][p.x] = (i == 0) ? snakeLine.head : snakeLine.body;  } else {  putGameOverInMap(snakeLine.snakePoints.size());  }  }  }  void putGameOverInMap(int points) {  char[] gameOver = ("GameOver Score:"+(points-3)).toCharArray();  for (int i = 0; i < gameOver.length; i++) {  map[HEIGHT / 2 - 1][i + (WIDTH - gameOver.length) / 2] = gameOver[i];  }  show();  System.exit(1);  } } class SnakeLine {  static final int RIGHT = 0, DOWN = 1, LEFT = 2, UP = 3;  static final char head = 'O', body = 'o', worm = '~';//头和身体表示  static Point food = new Point((int) (Math.random() * (SnakeGame.WIDTH - 2)) + 1, (int) (Math.random() * (SnakeGame.HEIGHT - 2)) + 1);  private void newFood() {  food = new Point((int) (Math.random() * (SnakeGame.WIDTH - 2)) + 1, (int) (Math.random() * (SnakeGame
            .HEIGHT - 2)) + 1);  }  LinkedList<Point> snakePoints = new LinkedList<>();//蛇的身体内容  void initSnake() {  Point head = new Point(SnakeGame.WIDTH / 2, SnakeGame.HEIGHT / 2);  snakePoints.addFirst(head);// snakePoints.addLast(new Point(head.x - 1, head.y));  snakePoints.addLast(new Point(head.x - 2, head.y));  }  int move(int orient) {  Point p = snakePoints.getFirst();  Point np = null;  switch (orient) {  case SnakeLine.RIGHT:  np = new Point(p.x + 1, p.y);  break;  case SnakeLine.LEFT:  np = new Point(p.x - 1, p.y);  break;  case SnakeLine.DOWN:  np = new Point(p.x, p.y + 1);  break;  case SnakeLine.UP:  np = new Point(p.x, p.y - 1);  break;  }  if (snakePoints.contains(np)) {  return -1;//咬到自己了  }  snakePoints.addFirst(np);  if (np.equals(food)) { 
   //吃到食物了  newFood();  return 2;  }  snakePoints.removeLast();  return 1;  } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197011.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java拖拽排序工具类「建议收藏」

    Java拖拽排序工具类「建议收藏」packagecom.ciih.jwt.util.sort;importjava.lang.reflect.Field;importjava.util.Collections;importjava.util.List;/***拖拽排序工具:此工具将传入的list重新排序后返回,使用者只需要将list重新存入数据库即可完成排序.*<>*拖拽排序必然牵扯到两个元素,被拖拽的元素和被挤压的元素.排序方式就存在两种,一种是两个元素进行交换位置,一种是一个元素拖到.

    2022年6月29日
    24
  • 【SpringBoot】39、SpringBoot上传文件至项目resources目录下

    【SpringBoot】39、SpringBoot上传文件至项目resources目录下当我们没有搭建单独的文件服务器时,我们需要将文件上传至项目目录下,今天我们就学习如何上传文件到项目的resources目录下一、引入依赖<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></depende

    2022年6月13日
    29
  • vs2012创建WCF应用程序

    vs2012创建WCF应用程序vs2012创建WCF应用程序

    2022年4月25日
    37
  • unity3d让物体移动_3D怎么让物体不被渲染

    unity3d让物体移动_3D怎么让物体不被渲染Unity3D入门:简单的物体运动 我们来了解一下Translate的使用首先我们来看看场景的搭建:建一个立方体,加一个点光源。 我们要实现的就是让场景中的立方体延X轴嗖嗖的移动那么我们在Project新建一个js脚本Creat-&gt;Javascript键入代码functionUpdate(){    transform.Trans…

    2022年8月10日
    6
  • CSRF攻击与防御(写得非常好)「建议收藏」

    转载地址:http://www.phpddt.com/reprint/csrf.htmlCSRF概念:CSRF跨站点请求伪造(Cross—SiteRequestForgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,

    2022年4月14日
    37
  • python type error是什么意思_Python 报错 TypeError:’DoesNotExist’对象不可调用

    python type error是什么意思_Python 报错 TypeError:’DoesNotExist’对象不可调用公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:codedq,发送下载链接帮助你免费下载!本博客日IP超过2000,PV3000左右,急需赞助商。极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:codedq,之前的微信号好友位已满,备注:返现饿了么大量招人,我内推!Java方向!薪资不设上限,工作年龄不限…

    2025年5月23日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号