프로그래밍에 익숙하지 않고 C#으로 시작했습니다. 그래서 나는 콘솔에서 간단한 게임을 만드는 방법에 대한 튜토리얼을 따랐다. Here's the tutorial. 그리고 내가 튜토리얼을 끝내 자마자 나는 괜찮은 게임을 남겼지 만 세련된 것은 아니었다. 게임 자체가 다시 시작되지 않습니다.콘솔 게임을 다시 시작하려면 어떻게해야합니까?
나는 그것을 극복하려고 노력한 몇 가지 다른 방법을 시도했지만 아무 것도 시도하지 못했습니다.
그래서 해 보았습니다. 왜이게 효과가 없습니까?
using System;
using System.Threading;
using System.Diagnostics;
namespace DodgeGame
{
public class Game
{
//This is our constructor,
// it gets run auto when new instance is made.
public Game()
{
//PLAYER
playerUnit = new PlayerUnit(5, 5, "@");
//ENEMY
enemyUnits = new Unit[ numEnemies ];
Random = new Random();
Score = 0;
for(int i = 0; i < numEnemies; i++)
{
int row = Random.Next(0, Console.WindowHeight - 1);
enemyUnits[i] = new EnemyUnit(Console.WindowWidth -1, row , "<");
}
stopwatch = new Stopwatch();
}
private Stopwatch stopwatch;
private Unit playerUnit;
private int numEnemies = 20;
private Unit[] enemyUnits;
public static Random Random;
public static int Score;
public void Run()
{
stopwatch.Start();
long timeAtPreviousFrame = stopwatch.ElapsedMilliseconds;
while(true)
{
//Time since last frame.
int deltaTimeMS = (int)(stopwatch.ElapsedMilliseconds
- timeAtPreviousFrame);
timeAtPreviousFrame = stopwatch.ElapsedMilliseconds;
//Updating Units.
playerUnit.Update(deltaTimeMS);
for(int i = 0; i < enemyUnits.Length; i++)
{
enemyUnits[i].Update(deltaTimeMS);
if(playerUnit.IsCollidingWith(enemyUnits[i]))
{
//Then game over.
GameOver();
return;
}
}
playerUnit.Draw();
foreach (Unit u in enemyUnits)
{
u.Draw();
}
//Draw the score.
Console.SetCursorPosition(0, Console.WindowHeight - 1);
Console.Write("SCORE: " + Score.ToString());
//Lets just do a tiny sleep to avoid running at too high of fps.
Thread.Sleep(5);
}
//PROGRAM END.
}
void GameOver()
{
Console.Clear();
Console.WriteLine("Game Over. Your Score was: " + Score);
Console.WriteLine("Insert Name to LeaderBoard:");
//TODO: Make a local leaderboard?
if(Console.KeyAvailable == true)
{
ConsoleKeyInfo cki = Console.ReadKey(true);
while(cki.Key != ConsoleKey.Escape)
{
if(cki.Key == ConsoleKey.Spacebar) Game();
cki = Console.ReadKey(true);
}
Console.SetCursorPosition(0,Console.WindowHeight - 1);
}
}
} 나는 창을 닫지 않고 내 게임을 다시 시작하려는
.
죄송합니다.이 정보가 도움이되지 않는다면 죄송합니다.
이것은 제공해야하는 정보의 일부가 아니며 충분하지 않습니다. – Ogbe
주요 기능은 주요 기능이 어떻게 보이고 게임 루프 중에 어떤 일이 일어나는지 보여주기위한 것입니다. (자습서를 확인할 수는 있지만 질문에 충분한 정보가 포함되어 있지 않음을 의미합니다.) – Icepickle
글쎄, 이것이 증명합니다. 내가 얼마나 몰랐는지 :/ – deviousPriest