(hjälp) C# console application meny via ConsoleKey

Permalänk
Medlem

(hjälp) C# console application meny via ConsoleKey

tjenare, jag sitter här hemma och har tråkigt, och orkar inte spela battlefield bad company2, så jag tänkte göra ett eget ganska simpelt spel, i detta fallet donkey kong.

jag har ett problem, jag ska göra en meny där man bläddrar med piltangenterna och sedan väljer med enter.

http://pastebin.com/kNqkVxJT

ska sedan göra en sida där man registrerar sig och sedan ska man kunna logga in på spelet med det kontot man skapar.

men men, problemet är. i if else satsen så kollar den om menyY har värde 3, 4, eller 5 och genom det ska ny information i programmet hittas. när jag väljer något i menyn så stängs programmet ner. och skriver inte ut någon text eller linkande. någon som har någon ide om hur man kan fixa det?

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Medlem
Skrivet av x3onz:

tjenare, jag sitter här hemma och har tråkigt, och orkar inte spela battlefield bad company2, så jag tänkte göra ett eget ganska simpelt spel, i detta fallet donkey kong.

jag har ett problem, jag ska göra en meny där man bläddrar med piltangenterna och sedan väljer med enter.

http://pastebin.com/kNqkVxJT

ska sedan göra en sida där man registrerar sig och sedan ska man kunna logga in på spelet med det kontot man skapar.

men men, problemet är. i if else satsen så kollar den om menyY har värde 3, 4, eller 5 och genom det ska ny information i programmet hittas. när jag väljer något i menyn så stängs programmet ner. och skriver inte ut någon text eller linkande. någon som har någon ide om hur man kan fixa det?

Eftersom du bara har exit på ett ställe så kan du ju skriva något där innan du kör exit-koden. Då vet du om det är din logik det är fel på.

Om det är så att menyY = 0 när den står på "1. Stat the game" så kommer den aldrig att bli högre eller lika med 3. I din kod så gör du så att allt under 3 blir automatiskt 5. Då går den direkt till exit.

Ett tips, gör lite metoder som förenklar utskrivningen av menyerna osv. Jag ser att du kör Sleep(x) för att det inte ska skrivas ut så snabbt.

private void PrintLettersSlow(string text,long sleeptime)
{
//Loopa alla chars i "text" och skriv ut
//Gör en sleep efter varje utskrivning med "sleeptime" som intervallet.
}

private void PrintSlowLine(string text,long sleeptime)
{
//Skriv ut texten
//Gör en sleep efter utskrivningen med "sleeptime" som intervallet.
}

Du kanske redan har tänkt på det. Större uppdelning skulle ditt spel kräva skulle jag säga.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem
Skrivet av Leedow:

Eftersom du bara har exit på ett ställe så kan du ju skriva något där innan du kör exit-koden. Då vet du om det är din logik det är fel på.

Om det är så att menyY = 0 när den står på "1. Stat the game" så kommer den aldrig att bli högre eller lika med 3. I din kod så gör du så att allt under 3 blir automatiskt 5. Då går den direkt till exit.

Ett tips, gör lite metoder som förenklar utskrivningen av menyerna osv. Jag ser att du kör Sleep(x) för att det inte ska skrivas ut så snabbt.

private void PrintLettersSlow(string text,long sleeptime)
{
//Loopa alla chars i "text" och skriv ut
//Gör en sleep efter varje utskrivning med "sleeptime" som intervallet.
}

private void PrintSlowLine(string text,long sleeptime)
{
//Skriv ut texten
//Gör en sleep efter utskrivningen med "sleeptime" som intervallet.
}

Du kanske redan har tänkt på det. Större uppdelning skulle ditt spel kräva skulle jag säga.

det här känns lite udda, igår fungerade inte menyn som jag ville, idag så fungerar den :S

angående private void PrintSlowLine(string text,long sleeptime)
{
//Skriv ut texten
//Gör en sleep efter utskrivningen med "sleeptime" som intervallet.
}
så får jag tacka för tipset, ska lägga till det i mitt spel

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Skrivet av Leedow:

private void PrintLettersSlow(string text,long sleeptime)
{
//Loopa alla chars i "text" och skriv ut
//Gör en sleep efter varje utskrivning med "sleeptime" som intervallet.
}

Skrivet av x3onz:

Exakt som Leedow sa, du bör dela upp din kod för att senare göra den mer läsbar.

Jag har gjort en liknande funktion i c++ men bör gå relativt enkelt att göra om till C#.
Då jag antar att en string har liknande funktioner i C# som i c++.

void printText(long sleep, string text) { for(unsigned int i = 0; i < text.size(); i++) { cout << text[i]; Sleep(sleep); } } int main() { string text ("hello world"); printText(500, text); }