Java 猫跟踪老鼠、小游戏
我正在制作一个小游戏,猫必须抓住一只随意移动的老鼠。代码背后的想法是首先随机移动鼠标,然后检查猫与鼠标的位置。该代码对于较小的网格(CatAndMouse(…)中的第一个输入)运行良好,但在这个示例中(n=100),鼠标开始在0以下移动。我肯定会有更聪明的方法来移动猫,但我的主要问题是为什么鼠标移动的y值太负?如果当前位置大于0,则仅应沿负y方向移动,如果其等于0,则不应移动Java 猫跟踪老鼠、小游戏,java,Java,我正在制作一个小游戏,猫必须抓住一只随意移动的老鼠。代码背后的想法是首先随机移动鼠标,然后检查猫与鼠标的位置。该代码对于较小的网格(CatAndMouse(…)中的第一个输入)运行良好,但在这个示例中(n=100),鼠标开始在0以下移动。我肯定会有更聪明的方法来移动猫,但我的主要问题是为什么鼠标移动的y值太负?如果当前位置大于0,则仅应沿负y方向移动,如果其等于0,则不应移动 public class CatAndMouse { publi
public class CatAndMouse {
public static void main(String[] args) {
// runs a test
CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
}
// method here
public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
// print user input
System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
int k = 0;
Random random = new Random();
// checks for valid input
if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
System.out.println("ERROR");
}
else {
while ( catX != mouseX || catY != mouseY) {
k ++;
int mouseMovement = random.nextInt(5);
if ( mouseMovement == 1 && mouseX < n) {
mouseX ++;
}
else if ( mouseMovement == 2 && mouseY < n) {
mouseY ++;
}
else if ( mouseMovement == 3 && mouseX > 0) {
mouseX --;
}
else if ( mouseMovement == 4 && mouseY > 0) {
mouseY --;
}
// cat
if ( catX < mouseX && catY < mouseY){
catX ++;
catY ++;
}
else if ( catX > mouseX && catY > mouseY) {
catX --;
catY --;
}
else if ( catX < mouseX && catY > mouseY) {
catX ++;
mouseY --;
}
else if ( catX > mouseX && catY < mouseY) {
catX --;
catY ++;
}
else if ( catX == mouseX+1) {
catX ++;
}
else if ( catY == mouseY+1) {
catY ++;
}
else if ( catX == mouseX-1) {
catX --;
}
else if ( catY == mouseY-1) {
catY --;
}
else if ( catX < mouseX) {
catX += 2;
}
else if ( catY < mouseY) {
catY +=2 ;
}
else if ( catX > mouseX) {
catX -= 2;
}
else if ( catY > mouseY) {
catY -= 2;
}
System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
}
}
}
}
公共类目录和鼠标{
公共静态void main(字符串[]args){
//运行测试
跑卡塔鼠(100,7,88,98,13);
}
//这里的方法
公共静态void runCatAndMouse(int n、int catX、int catY、int mouseX、int mouseY){
//打印用户输入
System.out.println(n+“[”+catX+”;“+catY+”]“+”[“+mouseX+”;“+mouseY+”]);
int k=0;
随机=新随机();
//检查有效输入
如果(catX<0 | | | catY<0 | | | mouseX<0 | | mouseY<0 | | n<0 | | catX>n | | mouseX>n | | mouseY>n){
System.out.println(“错误”);
}
否则{
while(catX!=mouseX | | catY!=mouseY){
k++;
int mouseMovement=random.nextInt(5);
if(mouseMovement==1&&mouseX0){
鼠标--;
}
else if(mouseMovement==4&&mouseY>0){
老鼠——;
}
//猫
如果(catXmouseX&&catY>mouseY){
catX--;
凯蒂--;
}
else if(catXmouseY){
catX++;
老鼠——;
}
else if(catX>mouseX&&catY鼠标){
catX-=2;
}
else if(猫>老鼠){
catY-=2;
}
System.out.println(“移动“+k+”[“+catX+”;“+catY+”]“+”[“+mouseX+”;“+mouseY+”]);
}
}
}
}
再次查看您的else if
块。你有
public class CatAndMouse {
public static void main(String[] args) {
// runs a test
CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
}
// method here
public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
// print user input
System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
int k = 0;
Random random = new Random();
// checks for valid input
if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
System.out.println("ERROR");
}
else {
while ( catX != mouseX || catY != mouseY) {
k ++;
int mouseMovement = random.nextInt(5);
if ( mouseMovement == 1 && mouseX < n) {
mouseX ++;
}
else if ( mouseMovement == 2 && mouseY < n) {
mouseY ++;
}
else if ( mouseMovement == 3 && mouseX > 0) {
mouseX --;
}
else if ( mouseMovement == 4 && mouseY > 0) {
mouseY --;
}
// cat
if ( catX < mouseX && catY < mouseY){
catX ++;
catY ++;
}
else if ( catX > mouseX && catY > mouseY) {
catX --;
catY --;
}
else if ( catX < mouseX && catY > mouseY) {
catX ++;
mouseY --;
}
else if ( catX > mouseX && catY < mouseY) {
catX --;
catY ++;
}
else if ( catX == mouseX+1) {
catX ++;
}
else if ( catY == mouseY+1) {
catY ++;
}
else if ( catX == mouseX-1) {
catX --;
}
else if ( catY == mouseY-1) {
catY --;
}
else if ( catX < mouseX) {
catX += 2;
}
else if ( catY < mouseY) {
catY +=2 ;
}
else if ( catX > mouseX) {
catX -= 2;
}
else if ( catY > mouseY) {
catY -= 2;
}
System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
}
}
}
}
else if ( catX < mouseX && catY > mouseY) {
catX ++;
mouseY --;
}
else if(catXmouseY){
catX++;
老鼠——;
}
从逻辑上讲,你认为这是在做什么?我相信如果你把它从mouseY--
改为catY--
它将与你的猫捉老鼠游戏的逻辑相匹配。你在中有一个mouseY--
,否则如果块,而不是catY--
。
public class CatAndMouse {
public static void main(String[] args) {
// runs a test
CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
}
// method here
public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
// print user input
System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
int k = 0;
Random random = new Random();
// checks for valid input
if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
System.out.println("ERROR");
}
else {
while ( catX != mouseX || catY != mouseY) {
k ++;
int mouseMovement = random.nextInt(5);
if ( mouseMovement == 1 && mouseX < n) {
mouseX ++;
}
else if ( mouseMovement == 2 && mouseY < n) {
mouseY ++;
}
else if ( mouseMovement == 3 && mouseX > 0) {
mouseX --;
}
else if ( mouseMovement == 4 && mouseY > 0) {
mouseY --;
}
// cat
if ( catX < mouseX && catY < mouseY){
catX ++;
catY ++;
}
else if ( catX > mouseX && catY > mouseY) {
catX --;
catY --;
}
else if ( catX < mouseX && catY > mouseY) {
catX ++;
mouseY --;
}
else if ( catX > mouseX && catY < mouseY) {
catX --;
catY ++;
}
else if ( catX == mouseX+1) {
catX ++;
}
else if ( catY == mouseY+1) {
catY ++;
}
else if ( catX == mouseX-1) {
catX --;
}
else if ( catY == mouseY-1) {
catY --;
}
else if ( catX < mouseX) {
catX += 2;
}
else if ( catY < mouseY) {
catY +=2 ;
}
else if ( catX > mouseX) {
catX -= 2;
}
else if ( catY > mouseY) {
catY -= 2;
}
System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
}
}
}
}