Dopiero zaczynam przygodę z C# i tak sobie w celach czysto edukacyjnych postanowiłem napisać coś w stylu walki robotów. Wystawiam tutaj ten program bardziej w celu poznania popełnionych przeze mnie błędów, niż jakiejkolwiek oceny [bo co tu oceniać...]. Na razie opcja Player vs Computer wygląda identycznie jak Computer vs Computer z tego względu iż nie wiem jak się za to zabrać, brakuje mi pomysłu, ale z czasem może coś wymyśle.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace MyApp
{
class KlasaGlowna
{
static void Main(string[] args)
{
Robot r1 = new Robot();
Robot r2 = new Robot();
Console.WriteLine("Robots fight game.");
Console.WriteLine("1. Computer vs Computer\n2. Player vs Computer\n3. Info\n4. End");
MenuG:
var key = Console.ReadKey(true);
try
{
}
catch(FormatException)
{
Console.WriteLine("Błędne dane. Wprowadź cyfrę 1-4.");
goto MenuG;
}
switch (key.Key)
{
case ConsoleKey.D1:
goto WalkaPC;
case ConsoleKey.D2:
goto Walka1P;
case ConsoleKey.D3:
Console.WriteLine("Ver. 1.0 beta\nCreated by t0m3k");
goto MenuG;
case ConsoleKey.D4:
Console.WriteLine("Zapraszamy ponownie...");
goto End;
default:
Console.WriteLine("Błędne dane. Wprowadź cyfrę 1-4.");
goto MenuG;
}
WalkaPC:
do
{
Console.WriteLine();
r1.versus(r1.attack(), r2.deffence());
Thread.Sleep(500);
if(r1.HP < 0)goto loss;
r2.versus(r2.attack(), r1.deffence());
loss:
Thread.Sleep(500);
} while (r1.HP > 0 && r2.HP > 0);
if (r1.HP == r2.HP)
Console.WriteLine("Walka zakończona remisem");
else if (r1.HP > r2.HP)
Console.WriteLine("Zwycięża robot 1!\nPozostało HP: r1= {0}, r2={1}", r1.HP, r2.HP);
else
Console.WriteLine("Zwycięża robot 2!\nPozostało HP: r1= {0}, r2={1}", r1.HP, r2.HP);
goto End;
Walka1P:
do
{
Console.WriteLine();
r1.versus(r1.attack(), r2.deffence());
Thread.Sleep(500);
if(r1.HP < 0)goto loss;
r2.versus(r2.attack(), r1.deffence());
loss:
Thread.Sleep(500);
} while (r1.HP > 0 && r2.HP > 0);
if (r1.HP == r2.HP)
Console.WriteLine("Walka zakończona remisem");
else if(r1.HP > r2.HP)
Console.WriteLine("Zwycięża robot 1!\nPozostało HP: r1= {0}, r2={1}", r1.HP, r2.HP);
else
Console.WriteLine("Zwycięża robot 2!\nPozostało HP: r1= {0}, r2={1}", r1.HP, r2.HP);
End:
Console.ReadKey();
}
}
public class Robot
{
public int HP = 10;
int dmg = 0;
static Random random = new Random();
public int attack()
{
int attack = random.Next(5, 10);
return attack;
}
public int deffence()
{
int deffence = random.Next(0, 10);
return deffence;
}
public void versus(int atc, int def)
{
if (atc < def)
Console.WriteLine("Block");
else
{
dmg = atc - def;
Console.WriteLine("Zadane obrażenia {0}!", dmg);
HP -= dmg;
}
}
}
}
http://www.megaupload.com/?d=IP8TMEOQ
Zależy mi na wszystkich opiniach i komentarzach, nawet tych najkrytyczniejszych :P
Pozdro