Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图写出一个程序_C# - Fatal编程技术网

C# 试图写出一个程序

C# 试图写出一个程序,c#,C#,好的,对于我的程序,我正在尝试得到它,这样当我在我的程序上按下一个键,说我按下L,它在4x4 2d阵列中移动,我到达我在阵列上指定为p的坑,我希望它知道它击中了p并打印出来,你击中了一个坑,或者如果我到达了阵列上有G的地方,我希望它打印出来,你已经找到了金子。感谢您的帮助 using System; namespace DragonCave { public struct DragonPlayer { public int X, Y; publi

好的,对于我的程序,我正在尝试得到它,这样当我在我的程序上按下一个键,说我按下L,它在4x4 2d阵列中移动,我到达我在阵列上指定为p的坑,我希望它知道它击中了p并打印出来,你击中了一个坑,或者如果我到达了阵列上有G的地方,我希望它打印出来,你已经找到了金子。感谢您的帮助

using System;

namespace DragonCave
{
    public struct DragonPlayer
    {
        public int X, Y;
        public string CurrentMove;
    }

    public class DragonGameboard
    {
        public string[,] GameboardArray;
        public DragonPlayer Player;
        private Random r;

        public DragonGameboard(){
            GameboardArray = new string[4,4];
            Player.CurrentMove = "";
            r = new Random();
            Player.X = r.Next(0, 4);
        Player.Y = r.Next(0, 4);
        GenerateRandomBoard();
    }

    private void GenerateRandomBoard()
    {
       //Put a dot in every spot
        int row;
        int col;
        for (row = 0; row < 4; row++)
        {
            for (col = 0; col < 4; col++)
            {
                Console.Write(GameboardArray[row, col] = ".");
            }
            //Console.WriteLine();
        }

        //Randomly Places the entrance, dragon, pit and gold.

        GameboardArray[r.Next(0,4), r.Next(0, 4)] = "E";
        GameboardArray[r.Next(0,4), r.Next(0,4)] = "D";
        GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P";
        GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P";
        GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "P";
        GameboardArray[r.Next(0, 4), r.Next(0, 4)] = "G";
    }

    public void PrintBoard()
    {
        int row;
        int col;
        for (row = 0; row < 4; row++)
        {
            for (col = 0; col < 4; col++)
            {
                Console.Write(GameboardArray[row, col] + "\t");
            }
            Console.WriteLine();
        }
        Console.WriteLine("Cheat you are in"  + Player.X + "," + Player.Y);

        //fill with room numbers

    }

    public  void ProcessMove(string move)
    {
        switch (move)
        {
            case "F":
                Console.WriteLine("You chose forward");
                break;
            case "L":
                Player.X--;
                Player.Y--;
                //Console.WriteLine("You chose Left");
                Console.WriteLine("A Breeze is in the air");
                break;
            case "R":
                Player.X++;
                Player.Y++;
                if (GameboardArray)
                Console.WriteLine("You chose Right");
                break;
            case "G":
                Console.WriteLine("You chose Grab gold");
                break;
            case "S":
                Console.WriteLine("You chose Shoot arrow");
                break;
            case "C":
                Console.WriteLine("You chose Climb");
                break;
            case "Q":
                Console.WriteLine("You chose Quit");
                break;
            case "X":
                Console.WriteLine("You chose Cheat");
                PrintBoard();
                break;
            default:
                Console.WriteLine("Invalid move!!!!!!!!!!1");
                break;
        }
    }
}
使用系统;
名称空间龙洞
{
公共结构DragonPlayer
{
公共整数X,Y;
公共字符串移动;
}
公营龙游局
{
公共字符串[,]GameboardArray;
公共龙牌玩家;
私有随机r;
公共游戏局(){
GameboardArray=新字符串[4,4];
Player.CurrentMove=“”;
r=新随机数();
Player.X=r.Next(0,4);
Player.Y=r.Next(0,4);
GeneratorDomainBoard();
}
专用无效生成器DomBoard()
{
//在每个点上画一个点
int行;
int col;
用于(行=0;行<4;行++)
{
用于(列=0;列<4;列++)
{
写入(GameboardArray[row,col]=”);
}
//Console.WriteLine();
}
//随机放置入口、龙、坑和黄金。
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“E”;
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“D”;
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“P”;
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“P”;
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“P”;
游戏板阵列[r.Next(0,4),r.Next(0,4)]=“G”;
}
公共印制板()
{
int行;
int col;
用于(行=0;行<4;行++)
{
用于(列=0;列<4;列++)
{
写入(GameboardArray[row,col]+“\t”);
}
Console.WriteLine();
}
Console.WriteLine(“欺骗你在“+Player.X+”、“+Player.Y”);
//填上房间号码
}
公共void进程移动(字符串移动)
{
开关(移动)
{
案例“F”:
Console.WriteLine(“您选择了前进”);
打破
案例“L”:
Player.X--;
Player.Y--;
//Console.WriteLine(“您选择了左”);
控制台。WriteLine(“微风吹过”);
打破
案例“R”:
Player.X++;
Player.Y++;
if(游戏板阵列)
Console.WriteLine(“您选择正确”);
打破
案例“G”:
WriteLine(“你选择了抓金”);
打破
案例“S”:
WriteLine(“你选择了射箭”);
打破
案例“C”:
WriteLine(“你选择了攀登”);
打破
案例“Q”:
Console.WriteLine(“您选择退出”);
打破
案例“X”:
WriteLine(“你选择了作弊”);
印制板();
打破
违约:
控制台。写入线(“无效移动!!!!!!!!!1”);
打破
}
}
}

只需检查GameboardArray[player.x,player.y]上的字符串

public void ProcessTileEvent()
{
    if( Player.X >= 0 && Player.X < 4 && Player.Y >= 0 && Player.Y < 4  )
    {
        switch( GameboardArray[Player.X, Player.Y] )
        {
            case "G":
            Console.WriteLine( "You found gold!" );
            break;
            case "P":
            Console.WriteLine( "You fell in a pit!" );
            break;
        }
    }
}
public void ProcessTileEvent()
{
如果(Player.X>=0&&Player.X<4&&Player.Y>=0&&Player.Y<4)
{
开关(GameboardArray[Player.X,Player.Y])
{
案例“G”:
控制台。WriteLine(“你找到了金子!”);
打破
案例“P”:
控制台。WriteLine(“你掉进坑里了!”);
打破
}
}
}

每次玩家移动时,你可能都想这样做。

如果你解释了发生了什么以及为什么不是你想要的,这对任何试图回答你的问题的人都是有益的。清楚地陈述你的目标和当前行为,然后问一个问题。一旦你这样做,我相信会有更多的人能够帮助你。所以让我们一起来嗯,我从数组中的2,1开始,我想移动到数组中的2,2,然后我遇到了一个我指定为P的坑,那一小段代码对程序有用吗?不,你不能只是复制并粘贴它。但是,这正是你需要做的。你有一个字符串数组,对吧,播放器沿着数组移动。你知道吗要检查播放器下面的内容,因此您要查找的字符串位于播放器的位置是有意义的。如果您位于2,1,并向上移动到2,2,那么您可以检查数组中2,2处的字符串,您可以根据字符串的位置执行操作。