我正在制作基于3D文字的游戏。当我启动程序时,它执行“命中x退出”行,但它不会在方法Game中执行任何其他代码行。这是整个计划。如果你能弄明白什么是错的,那将会有所帮助。
using System;
namespace ThreeDGame {
class Player {
private int px=1;
public int Px {
get {return px;}
set {px = value;}
}
private int py=1;
public int Py {
get {return py;}
set {py = value;}
}
private int pz=1;
public int Pz {
get {return pz;}
set {pz = value;}
}
public Player(int x, int y, int z) {
px=x;
py=y;
pz=z;
}
public void xp() {
px++;
if (px==10) {
px=1;
}
}
public void xn() {
px--;
if (px==0) {
px=9;
}
}
public void yp() {
py++;
if (py==10) {
py=1;
}
}
public void yn() {
py--;
if (py==0) {
py=9;
}
}
public void zp() {
pz++;
if (pz==10) {
pz=1;
}
}
public void zn() {
pz--;
if (pz==0) {
pz=9;
}
}
}
class Board {
public char[,,] board = new char[9,9,9];
Player o = new Player(1,1,1);
public Board() {
for (int x=0;x<board.GetLength(0);++x) {
for (int y=0;y<board.GetLength(1);++y) {
for (int z=0;z<board.GetLength(2);++z) {
board[x,y,z] = '~';
}
}
}
}
public void DispBoard(int z) {
for (int a=0;a<board.GetLength(0);a++) {
Console.WriteLine();
for (int b=0;b<board.GetLength(1);b++) {
Console.Write(board[a,b,z]);
}
}
}
public void Move(char dir) {
switch (dir) {
case 'w':{
o.yn();
break;
}
case 's':{
o.yp();
break;
}
case 'a':{
o.xn();
break;
}
case 'd':{
o.xp();
break;
}
case 'q':{
o.zn();
break;
}
case 'e':{
o.zp();
break;
}
}
}
public void PlayerPosOnBoard() {
board[o.Px,o.Py,o.Pz] = '@';
}
public void Game() {
Console.Write("Hit x to exit");
for (int x=0;x==1;x=x) {
char c = Console.ReadKey().KeyChar;
switch (c) {
case 'x':{
x=1;
break;
}
default:{
Move(c);
DispBoard(o.Pz);
break;
}
}
}
}
}
class Game {
static void Main() {
Board b = new Board();
b.Game();
}
}
}
答案 0 :(得分:1)
该行:
for (int x=0;x==1;x=x)
会导致循环永不运行。第二个元素x==1
是正在检查的条件,它是假的,因为初始化器将x设置为零。
查看for循环的一些文档以便更好地理解。