0
私は3Dテキストベースのゲームを作っています。私がプログラムを起動すると、 "hit x to exit"という行が実行されますが、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();
}
}
}
このループには何が期待されますか?その理由は何ですか? 'for(int x = 0; x == 1; x = x)' whileループのほうがはるかに適しているようです。 – tnw
あなたは 'x!= 1'を意味すると思います。 – juharr
デバッガを使用する方法を学ぶ時間。 – LarsTech