Diskuze: Kontrola kódu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
asi to bude chtit vic studovat
xyz) proč se mi po přečtení návodu vypne hra;
xyz)chybí ošetření jiných vstupů při prvním switchi (a,b,c)
xyz)
"Nim je hra, kde můžete odebrat 1 až 3 zápalky z hromady,\nkde jich bude 10 až 100.
cislo.Next(10, 21);
Zkus popsat slovně jak má ta hra fungovat a já ti ukážu, jak by to mohlo
vypadat
Já jsem to upravoval a zapomněl jsem to přepsat v návodu, protože u
počtu sirek větší jak 20 už to bylo hodně na dlouho;
Zapoměl jsem napsat, abych se po přečtení návodu vrátil do menu;
Na tohle jsem taky zapomněl ;
Je to moje první aplikace, kterou nedělám podle tutoriálu, tak jsem chtěl
aby jste my pomohli odhalit chyby, abych je už nedělal
Vybereš si v menu nová hra, náhodně se ti vygeneruje počet sirek od 10 do 20, potom si vybereš jestli budeš začínat ty a nebo PC a střídáte se v odbírání 1-3 sirek za kolo. Kdo odebere jako poslední vyhrál.
A víš o tom, že vždy existuje vyhrávající strategie pro jednoho z
hráčů?
Vím, ale zatím jsem to neupravoval, později udělám náročnější verzi, aby to nebylo tak lehké najít.
Vždy když vidím někde v kódu "neuvážené" goto, tak mě v noci budí noční můry z raptorů (viz. obrázek).
PS: Vyhýbej se goto, nebo Tě sežere raptor.. True story.
internal static class Program
{
[STAThread]
private static void Main(string[] args)
{
Console.WriteLine("Chceš začít? ano/ne");
Player playerOnTurn = Console.ReadLine().ToLower() == "ano" ? Player.Human : Player.Pc;
Console.WriteLine("Kolik sirek? (10-20)");
int matchesCount = int.Parse(Console.ReadLine());
Console.Clear();
while (matchesCount > 0)
{
Console.WriteLine("Kolik sirek chceš odebrat? (1-3) Je jich aktualne {0}",
matchesCount);
int minus = 0;
if (playerOnTurn == Player.Human)
minus = int.Parse(Console.ReadLine());
else
minus = (matchesCount % 4 == 0) ? 1 : matchesCount % 4;
Console.WriteLine("Hráč {0} odebral {1} z celkoveho poctu {2}",
playerOnTurn,
minus,
matchesCount);
matchesCount -= minus;
if (matchesCount > 0)
playerOnTurn = (playerOnTurn == Player.Human) ? Player.Pc : Player.Human;
Console.WriteLine();
}
Console.WriteLine("Vyhrál "+ playerOnTurn.ToString());
}
}
enum Player
{
Pc, Human,
}
A teď mi budeš muset pár věcí objasnit .
Co je za a) tohle
[STAThread]
b)proč je u třídy internal
c)Player playerOnTurn = Console.ReadLine().ToLower() == "ano" ? Player.Human :
Player.Pc;
d)minus = (matchesCount % 4 == 0) ? 1 : matchesCount % 4;
e)playerOnTurn = (playerOnTurn == Player.Human) ? Player.Pc : Player.Human;
f)Console.WriteLine("Vyhrál " + playerOnTurn.ToString());
Promiň, že tě tak otravuju.Díky za všechno.
S pozdravem GunSpawn
Ani to nemusíš chápat, ono to tam VS za tebe dává automaticky
Je to v podstatě jednořádková podmínka (odborně ternární operátor). Dá se to napsat i jako:
if(Console.ReadLine().ToLower() == "ano")
playerOnTurn = Player.Human;
else
playerOnTurn = Player.Pc;
if(matchesCount % 4 == 0)
minus = 1
else
minus = matchesCount % 4;
Tuhle hru už jsem viděl, stačí, aby člověk udělal 1 chybu a už
nemůže vyhrát
Zobrazeno 14 zpráv z 14.