1

ASCII ゲームの衝突について助けが必要です。プレイヤーが別のオブジェクトにぶつかったときに何かをする方法はすでに知っています。しかし、プレイヤーがオブジェクトに当たったときにプレイヤーを停止させたいときは、ちょっと混乱しています。

プレイヤーが別のオブジェクトと衝突するときにこれを使用します。

if(player.x == object.x && player.y == object.y)
  {
       //Does something
  }

私はしばらく衝突のことをしていて、それを自分のゲームに実装したいので、迷路のようなゲームになる可能性があるので、あなたが私を助けることができればそれは素晴らしいことです. 読んでくれてありがとう:3

これが私のゲーム「WHOLE CODE」の構造です。

    public static void Main(string[] args)
    {
        int x = 40;
        int y = 12;
        int ax = 23;
        int ay = 7;
        int apple = 0;
        int starX = 64;
        int starY = 5;
        int score = 0;
        int total = 0;
        int time = 100;
        int xt;
        int yt;
        bool quit = false;
        Console.Title = "Catch and Run";

        while (quit == false)
        {
            Console.BackgroundColor = ConsoleColor.DarkGreen;

            //Blocks
            Console.SetCursorPosition(29, 18);
            Console.BackgroundColor = ConsoleColor.DarkGreen;

            //Clear Screen
            Console.Clear();

            //Players
            Console.SetCursorPosition(x, y);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("☻");

            Console.SetCursorPosition(ax, ay);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("o");

            Console.SetCursorPosition(starX, starY);
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.Write("☻");
            Console.ResetColor();

            //score
            Console.SetCursorPosition(0, 0);
            Console.WriteLine("People: " + score);
            //apples
            Console.SetCursorPosition(20, 0);
            Console.WriteLine("Apples: " + apple);
            //Total
            Console.SetCursorPosition(40, 0);
            total = apple + score;
            Console.WriteLine("Total: " + total);
            //Timer
            Console.SetCursorPosition(0, 23);
            Console.WriteLine("Steps Left: "+time);
            time--;

            ConsoleKeyInfo keyInfo = Console.ReadKey(false);

            //key controlls
            switch (keyInfo.Key)
            {
                case ConsoleKey.Escape:
                    quit = true;
                    break;
                case ConsoleKey.UpArrow:
                    if (y > 1)
                        y--;

                    break;
                case ConsoleKey.DownArrow:
                    if (y < 22)
                        y++;

                    break;
                case ConsoleKey.LeftArrow:
                    if (x > 0)
                        x--;

                    break;
                case ConsoleKey.RightArrow:
                    if (x < 79)
                        x++;

                    break;
            }
            // Randomize Blacks
            if (x == starX && y == starY)
            {

                Random random = new Random();
                starX = random.Next(0, 80);
                starY = random.Next(1, 22);
                score += 10;
                time += 30;
            }
            //Randomize Apples
            if (x == ax && y == ay)
            {

                Random random = new Random();
                ax = random.Next(0, 80);
                ay = random.Next(1, 22);
                apple += 5;
                time += 20;
            }
            // Game Over timer set to 0
            if (time == 0)
            {

                Console.Clear();
                Console.SetCursorPosition(40, 0);
                Console.WriteLine("GAME OVER");

                Console.WriteLine("Score" + total);
                Console.WriteLine("Press any key to continue");
                Console.ReadKey();
                quit = true;
            }
            if (x == 29 && y == 18)
            {
                x = 0;
                y = 1;

            }
        }
    }
}

}

4

1 に答える 1