获得随机游戏输出时出错 [英] error in getting the output of the shuffle game
本文介绍了获得随机游戏输出时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Threading;
namespace ConsoleApplication15
{
public partial class Shuffle
{
int[,] gridval = new int[3, 3];
Random r;
private int[] lable = new int[9];
ArrayList genArr;
int Num, num;
static int x, y;
static int z;
public void display_Details()
{
Random rand = new Random();
List<int> numbers = Enumerable.Range(0, 9).ToList();
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine("\t\t\t*****THE_SHUFFLE_GAME*****\n");
Console.WriteLine("---It is a single player game\n");
for (x = 0; x < 3; x++)
{
for (y = 0; y < 3; y++)
{
int index = rand.Next(0, numbers.Count - 1);
gridval[x, y] = numbers[index];
numbers.RemoveAt(index);
Console.Write(" + " + gridval[x, y]);
}
Console.WriteLine(" + ");
}
}
public void Initialize()
{
gridval = new int[3, 3]
{
{0,0,0},
{0,0,0},
{0,0,0},
};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if ((i == 3) && (j == 3))
{
x = i;
y = j;
}
else
{
gridval[i, j] = genRandomVal();
}
}
}
}
public int Random()
{
Num = r.Next(1, 9);
for (int k = 0; k < genArr.Count; k++)
{
if (genArr[k].Equals(Num))
{
Random();
}
}
return Num;
}
public int genRandomVal()
{
num = Random();
genArr.Add(num);
return num;
}
private void swaping(int a, int b)
{
int tmp;
tmp = gridval[x, y];
gridval[x, y] = gridval[a, b];
gridval[a, b] = tmp;
Console.WriteLine(gridval[x, y]);
}
private void moveDown()
{
if ((x - 1) < 0) return;
swaping(x - 1, y);
x = x - 1;
z = z - 3;
}
private void moveUp()
{
if ((x + 1) > 2) return;
swaping(x + 1, y);
x = x + 1;
z = z + 3;
}
private void moveRight()
{
if ((y - 1) < 0) return;
swaping(x, y - 1);
y = y - 1;
z = z - 1;
}
private void moveLeft()
{
if ((y + 1) > 2) return;
swaping(x, y + 1);
y = y + 1;
z = z + 1;
}
public void Run_Game()
{
char ch;
Console.WriteLine("\n---Enter L,R,U,D to swaping");
ch = Convert.ToChar(Console.ReadLine());
for (x = 0; x < 3; x++)
{
for (y = 0; y < 3; y++)
{
if (gridval[x, y] == 0)
{
if (gridval[1, 1] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[1, 1], gridval[1, 0]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'R': //swaping(gridval[1, 1], gridval[1, 2]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[1, 1], gridval[0, 1]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
case 'D': //swaping(gridval[1, 1], gridval[2, 1]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[0, 1] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[0, 1], gridval[0, 0]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'R': //swaping(gridval[0, 1], gridval[0, 2]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
case 'D': //swaping(gridval[0, 1], gridval[1, 1]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[1, 2] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[1, 2], gridval[1, 1]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[1, 2], gridval[0, 2]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
case 'D': //swaping(gridval[1, 2], gridval[2, 2]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[2, 1] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[2, 1], gridval[2, 0]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'R': //swaping(gridval[2, 1], gridval[2, 2]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[2, 1], gridval[1, 1]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[1, 0] == 0)
{
switch (ch)
{
case 'D': //swaping(gridval[1, 0], gridval[2, 0]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
case 'R': //swaping(gridval[1, 0], gridval[1, 1]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[1, 0], gridval[0, 0]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[0, 0] == 0)
{
switch (ch)
{
case 'D': //swaping(gridval[0, 0], gridval[1, 0]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
case 'R': //swaping(gridval[0, 0], gridval[0, 1]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[0, 2] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[0, 2], gridval[0, 1]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'D': //swaping(gridval[0, 2], gridval[1, 2]);
moveDown();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[2, 2] == 0)
{
switch (ch)
{
case 'L': //swaping(gridval[2, 2], gridval[2, 1]);
moveLeft();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[2, 2], gridval[1, 2]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
else if (gridval[2, 0] == 0)
{
switch (ch)
{
case 'R': //swaping(gridval[2, 0], gridval[2, 1]);
moveRight();
Console.WriteLine(gridval[x, y]);
break;
case 'U': //swaping(gridval[2, 0], gridval[1, 0]);
moveUp();
Console.WriteLine(gridval[x, y]);
break;
//default:
}
}
}
}
}
}
class Program
{
static void Main(string[] args)
{
Shuffle obj1 = new Shuffle();
obj1.display_Details();
obj1.Run_Game();
// obj1.moveDown();
// obj1.moveLeft();
// obj1.moveRight();
// obj1.moveUp();
// obj1.Random();
Console.ReadLine();
}
}
}
}
执行代码后,我试图改变数字我不能在控制台中随机输出
不知道什么是错误
[edit]已添加代码块 - OriginalGriff [/ edit]
after executing the code when i try to shuffle numbers i cant shuffle the output in the console
dont know whats wrong
[edit]Code block added - OriginalGriff[/edit]
推荐答案
实际上,当我执行代码时,我只能将0洗牌一次,当我试图再次洗牌时它退出而不给出任何例外或任何事情
好吧 - 这正是我想要的期待。
看看你的代码 - 我会暂时删掉不相干的东西:
"actually when i executed the code i can shuffle 0 only once when i try to shuffle it again it exits without giving any exceptions or any thing"
Well yes - that is exactly what I would expect.
Look at your code - I'll rip out the irrelevant stuff for a moment:
public void Run_Game()
{
char ch;
Console.WriteLine("\n---Enter L,R,U,D to swaping");
ch = Convert.ToChar(Console.ReadLine());
// Do something with ch in nested loops.
}
class Program
{
static void Main(string[] args)
{
Shuffle obj1 = new Shuffle();
obj1.display_Details();
obj1.Run_Game();
Console.ReadLine();
}
}
那该怎么办?
创建游戏,它读取输入从用户,它做了一些事情,然后它回到主,从用户读取一行 - 并退出程序。
你需要循环Run_Game方法获取更多用户输入,直到他放弃或获胜!
So what is that going to do?
It creates the game, it reads an input from the user, it does something with it, then it's back to Main, read a line from the user - and exit the program.
You need to loop in the Run_Game method to get more user input until he gives up or wins!
这篇关于获得随机游戏输出时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文