获得随机游戏输出时出错 [英] error in getting the output of the shuffle game

查看:73
本文介绍了获得随机游戏输出时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆