C # Programmering [ BEHÖVER HJÄLP! ]

Permalänk
Medlem

C # Programmering [ BEHÖVER HJÄLP! ]

C# Hangman Hjälp!
Hejsan alla sweclockers som är programmerings intresserade
Jag går just nu en utb inom programmering 1 i C# och har lite funderingar.
Vet inte om boken totalt missat något eftersom jag inte än hittat en jätte bra lösning på mitt nuvarande problem

Vi ska göra ett "hänga gubbe spel"

Eftersom jag inte kan ändra String efter jag initierat den så tänkte jag att jag kör på att

-Används i Programmet-
char[] hemligtordgissat
char gissa
string hemligtord
bool rättord = false;

Användaren får skriva in ett ord som lagras i string hemligtord
där efter skapas även en char[] hemligtordgissat = new char[hemligtord.Lenght];
För att char array ska bli lika lång som ordet och anpassa sig efter vad användaren valt för ord
Sedan skapar jag även en char gissa;
Den är till för när användaren skall skriva in bokstaven som han vill gissa i ordet senare i spelet.
För att användaren ej ska se det hemliga ordet så kör jag även en for loop ibörjan

for(int i = 0; i < hemligtord.Length; i ++) { hemligtordgissat[i] = '-'; }

Så om användaren skrivit häst så kommer det när spelet börjar att stå

----

en för varje tecken

Användaren får gissa en bokstav och då går det igen in i en for loop

for(int i = 0; i < hemligtord.length; i++) { if(gissa == hemligtord[i]) hemligtordgissat[i] = hemligtord[i]; }

jag kör allting i en while loop för att repetera hela tiden sålänge !rättord
Problemet jag känner att jag behöver hjälp med är just biten att jämföra hemligtordgissat[] alla element mot ordet i string hemligtord och sedan sätta rättord = true;
Jag vet inte hur jag ska göra för att jämföra alla bokstäverna och sedan om alla stämmer med hemligtord utföra satser för avslutandet av spelet
Eftersom alla hemligtord[i] måste stämma med alla hemligtordgissat[i] för att det ska hända.

Förlåt om detta är väldigt klumpigt skrivet men skulle verkligen behöva hjälp.
Suttit o klurat fram o tbx i 2 dagarn non stop nu. Sett det finns någon hemligtord.Equals("hejsan"); men inte fått de o funka på nått sätt mellan hemligtord och hemligtordgissat

Skulle uppskatta det rejält om någon kunde ge mig lite tips.
Om ni anser att det finns bättre lösningar att kontrollera bokstaven mot ordet och kontrollera om hela ordet stämmer så skriv gärna.
Vill inte att ni ska skriva hela hängagubbe programmet till mig behöver just nu bara hjälp med den biten för de känns som att något missats i vårt studie medel för att kunna utföra detta eller är de bara jag som inte kommit helt in i tänket än

Om ni vill skriva över skype eller liknande så gör gärna det med cuteandbrutal på skype
Sedan får man text grattis du har klarat av ordet ect.

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Ett tips är att läsa om strängar på MSDN. (http://msdn.microsoft.com/en-us/library/7wtc81z6.aspx) Intressantast för dig är nog Split och Join.

Ett annat sätt att lösa problemet i koden du redan har är att tänka på det här sättet.
Du tilldelar hemligtordgissat (char[]) från hemligtord (string) och det verkar gå bra, alltså borde du kunna jämföra dem också. Så om du kan lista ut ett sätt att kolla om en kedja av konjunktioner är sann så har du något att uppdatera rättord (bool) med.

Visa signatur

.<

Permalänk
Medlem

Försök skriva psebdukoden för lösningen först, och använd detta för att lösa uppgiften.

Säg först att du har en sträng (string) för ordet.
En användare får sedan skriva in ett tecken (char) som hen tror finns i ordet,
detta körs sedan genom en loop som kollar samtliga tecken i ordet, om tecknet som angetts finns i ordet eller ej.
Finns tecknet i ordet, så är det bra, men finns det inte så blir det en bestraffning (ännu ett streck dras på den blivande hängda gubben).
Och detta fortsätts tills antingen man löst ordet, eller tills man gissat så många fel att man förlorat.
(Snabb lösning i text)

Huvudsaken med programmering är inte att få en lösning serverad för en, utan att man själv hittar en lösning.
Jag har hjälpt så många personer med lösningar, så jag vet själv att den bästa lösningen är att peka personen mot rätt håll, och inte att ge en färdig lösning.
En programmerare måste hitta en egen lösning på sina problem. Det finns så få programmerare i världen, istället för att vara en som fuskar (eller försöker hitta genvägar) genom lösningar, försök hitta dina egna lösningar på problemen. Du kommer ha mycket mer nytta av att tänka ut saker själv och lösa dessa, än att få andra att lösa problemen för dig.

Personligen så tycker jag att detta är en väldigt enkel uppgift. Därför tycker jag att det är väldigt viktigt för dig att hitta en egen lösning för detta.
Ta det såhär, om du fortsätter programmera, och tittar tillbaka på denna uppgiften om ett par år, så kommer du finna den löjligt enkel att lösa.
Jag kan skriva en möjlig lösning på denna uppgift på några minuter. Men skulle jag ge dig denna lösning, så skulle du inte lära dig något av detta, och du skulle få problem längre fram inom programmeringen.
Fortsätt kämpa, och skriv vad du tror är en bra lösning. Vi kan inte lösa detta åt dig, men vi kan delvis peka var du ska gå.

Permalänk
Medlem

Tack så mycket båda två. Vi skall inte göra någon gubbe som hängs utan man skall kunna välja antal misstag man gissat fel som max fel gräns. Men de kan jag lösa lätt. Vi får dock lägga till egen funktionalitet så länge det inte förstör huvud syftet med uppgiften.

Håller med dig helt NickoB jag vill inte få programmet klart av någon annan utan jag vill komma på en egen lösning men var lite hints/pekningar jag kände att behöver.
Ska kolla på det där med joins o grejjer, dock har de inte vart med i kursen så tror inte de förväntar sig att man skall kunna det eller använda det i programmet.
Det är lätt att jämföra två stycken strängar och se om de är sant.
Det funkar bra att kontrollera varje enskild bokstav i hemligtord[i] mot gissa och om de stämmer skriva in gissa hemligtordgissat[i] där de finns genom for loop.
Men sen vill jag testa i slut endan också så att varje enskild char[i] stämmer med string[i] och om samtliga stämmer så blir rättord = true;

Mixtrar massa med olika former av loopar och if satser för att få ihop något men inte lyckats jätte bra än.

Edit
Tack för länken oelrich

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem
Citat:

Eftersom jag inte kan ändra String efter jag initierat den så tänkte jag att jag kör på att

Tja string är immutable men för det så kan du ändra den, vad som sker i bakgrunden är att den skapas snarare än att den ändras, så detta borde inte stoppa dig från något eller? Eller får ni inte ändra på strängar?

Om du arbetar med klasser och har problem att skicka referenser påimmutable objeckt så läs på lite om ref här: http://msdn.microsoft.com/en-us/library/14akc2c7(v=vs.71).asp...

---

I alla fall tillbaka till ditt problem som du har. Du kan skapa en string med hjälp av en char array.

Så du borde kunna göra

Citat:

if (hemligtord.Equals(new string(hemligtordgissat), StringComparison.OrdinalIgnoreCase))
{
//match
}

Visa signatur

Speldator: i7-8700k, 32GB DDR4, RTX2080
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift

Permalänk
Medlem
Skrivet av necry:

För minimal ändring i din struktur så kan du bara lägga till en verifierings loop.
string hemligtord = "Hej";
char[] hemligtordgissat = {'H','e','j'};
bool rattord=true;
for (int i = 0; i < hemligtord.Length; i++)
rattord &= hemligtord[i] == hemligtordgissat[i];
där rattord ger true om ordet stämmer

Permalänk
Medlem
Skrivet av MugiMugi:

Tja string är immutable men för det så kan du ändra den, vad som sker i bakgrunden är att den skapas snarare än att den ändras, så detta borde inte stoppa dig från något eller? Eller får ni inte ändra på strängar?

Om du arbetar med klasser och har problem att skicka referenser påimmutable objeckt så läs på lite om ref här: http://msdn.microsoft.com/en-us/library/14akc2c7(v=vs.71).asp...

---

I alla fall tillbaka till ditt problem som du har. Du kan skapa en string med hjälp av en char array.

Så du borde kunna göra

Japp de du skrev fungerar att använda , ska analysera det du skrivit lite mer och få en uppfattning om hur det du skrev funkar exakt.
Det enda vi har fått se en enstaka gång i kurs literaturen är string.Equals("hej") det har aldrig varit ett enda ställe de jämfört en string med en char eller char array eller tex string.Equals(string2);

Känns som det finns fler sätt att jämföra de på även om de sättet du skrev verka fungera för mig.
Annars tycker jag personligen att den uppgiften vi fick i kombination till litteraturen är ganska dålig.
Ja mena de behöver ju verkligen inte skriva en hängagubbe tidigare i boken men de kunde gärna gjort något som är användbart att tänka in i detta programmet och de känns verkligen som de inte har gjort det. Jag kanske snurrar runt helt o hållet men de har inte gått igenom värst mycket med jämförelse med string och char[] ect.

Ska skumma igenom hela boken lite och se om jag hittat något mer ljus.
Tack så mycket alla som skrivit än sålänge.
Endel av det roliga men samtidigt ibland frustrerande i programmering är ju att hitta lösningar. Men som det är nu känns det som boken inte gett mig tillräcklig kunskap för att kunna utföra det.
Ska läsa mer nu och återkommer vad som händer.

Tack för alla svar igen

MVH
NECRY

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Kolla närmare på klassen StringBuilder, som kan användas för att hantera en sträng ungefär som en array:

http://msdn.microsoft.com/en-us/library/system.text.stringbui...

Själva programprincipen är ju rätt enkel:

1. Definiera en StringBuilder hemligtord
2. Definiera en lika lång StringBuilder hemligtordgissat som innehåller enbart _
3. Ta emot en gissning (char), loopa igenom hemligtord och jämför, vid träff, placera char på samma position i hemligtordgissat
4. Jämför hemligtord och hemligtordgissat med varandra, vid true, bryt loopen, annars loopa tillbaka till 3.

Du behöver egentligen inte ha någon variabel rättgissat som villkor för loopen 3-4, det går att köra while true och sedan köra break när villkoret är uppfyllt.

Permalänk
Medlem

Jag tror jag kommit på ett sätt nu faktiskts jag återkommer med hur jag ev löste det för o se vad ni har o säga.
Det finns föm smidigare metoder med mindre text ect för att lösa uppgiften men kom ihåg att det är programmering 1 i c# och lärarna förväntar sig att man skall använda kunskapen från de man lärt sig i kursen även om de andra metoderna är bättre.

Återkommer senare idag

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Jag har löst problemet sofar och det funkar som jag vill just nu. Detta är inte programmet som det kommer vara i slutet mer för att visa hur jag löste problemet med att kontrollera orden med varandra.
Somsagt dett är inte slutgiltig kod utan synpunkter mest på vad ni tycker om min lösning.
Tänk på att detta även är programmering 1 i C# man förväntas inte kunna mera avancerade typer av programmering än som föm skulle fungera mycket bätter och som många gett förslag om ovan.

-KOD FÖR MAIN- // Program.cs // Hänga Gubbe Spel för Projekt Arbete i Programmering 1 i C# // MER INFO KOMMER! using System; class HängaGubbe { static void Main() { Console.WriteLine("\n\n\tHänga Gubbe 0.1"); string hemligtord = "projektarbete"; char[] gissatord = new char[hemligtord.Length]; char gissa; bool rättord = false; Kontroll kontroll = new Kontroll(); for (int i = 0; i < gissatord.Length; i++) { gissatord[i] = '-'; } Console.Write("\n\n\t"); for (int i = 0; i < gissatord.Length; i++) // Döljer Gissat ord med - för varje bokstav { Console.Write(gissatord[i]); } Console.WriteLine("\n\tDags att Gissa Bokstav!"); while (!rättord) // STARTAR SPEL LOOPEN! { Console.Write("\n\tGissa : "); gissa = Convert.ToChar(Console.ReadLine()); kontroll.OrdKontroll(hemligtord, gissatord, gissa); rättord = kontroll.RättaOrd(hemligtord,gissatord); } Console.WriteLine("\n\n\n\tTryck på ENTER för att avsluta"); Console.ReadLine(); } } KOD FÖR Kontroll // kontroll.cs // Används för att kontrollera om bokstaven man skrivit in är korrekt och var i hemliga ordet den finns på för platser med OrdKontroll(string, char[], char); // Kontrollerar även om hela ordet är löst genom metoden RättaOrd(string,char[]); using System; class Kontroll { public void OrdKontroll(string hord, char[] gord, char bokstav) { for (int i = 0; i < hord.Length; i++) { if(hord[i] == bokstav) { gord[i] = bokstav; } } Console.Write("\n\n\tOrdet\n\n\t"); for (int o = 0; o < gord.Length; o++) { Console.Write(gord[o]); } } public bool RättaOrd(string hemligt, char[] gissatord) { string temp = ""; // Temporär string för att lagra allting från char[] gissatord och jämföra mot hemligt for (int i = 0; i < hemligt.Length; i++) // Fyller i temp med hela gissatord array { temp += gissatord[i]; } if (temp.Equals(hemligt)) // OM temp och hemligt matchar så klarar man spelet och retunerar värdet true till rättord i main { Console.WriteLine("\n\n\tGrattis du har klarat spelet!"); Console.WriteLine("\n\tDet rätta ordet var\t" + hemligt); return true; } else // ANNARS returneras falls till rättord spel loopen fortsätter { return false; } } }

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Okay de där ser väldigt oläsligt ut ovan men grejjen jag gjorde var att skapa en string temp som lägger till bokstaven från en char array i varje loop i temp genom att

temp += gissatord[i];

Sen körs även en IF som kollar om temp.Equals(hemligt);
gör det de så får man grattis i text och returnerar true till rättord i main som anropade metoden från början med

rättord = kontroll.RättaOrd(hemligtord,gissatord);

Lösningen var just denna temp som dör varje gång metoden körs igenom och är tom från början och då fungerar +=

Förlåt att allt ser klumpigt ut men är inte van vid hur det fungerar i sweclockers forum med programmering så det blir rätt skrivit här^^

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem
Skrivet av necry:

Jag har löst problemet sofar och det funkar som jag vill just nu. Detta är inte programmet som det kommer vara i slutet mer för att visa hur jag löste problemet med att kontrollera orden med varandra.
Somsagt dett är inte slutgiltig kod utan synpunkter mest på vad ni tycker om min lösning.
Tänk på att detta även är programmering 1 i C# man förväntas inte kunna mera avancerade typer av programmering än som föm skulle fungera mycket bätter och som många gett förslag om ovan.

-.-

Använd kod-taggs snälla..

Visa signatur

ᕦ(ツ)ᕤ

Permalänk
Medlem
Skrivet av Fronix:

Använd kod-taggs snälla..

Vadå kod tags?
Jag är helt ny när det gäller att posta i sweclockers forum med programmering.
Om du menar att det ser ut som en röra så förstår jag att man inte orka läsa det.

Men ser ut som det ändrats automatiskt?
Hur gör man kod-taggs?

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Hedersmedlem
Skrivet av necry:

Men ser ut som det ändrats automatiskt?
Hur gör man kod-taggs?

Ibland kan någon allsmäktig förbarma sig över inlägg...
Skriv

[CODE]//kod här[/CODE]

eller markera koden och tryck på brädgårdsknappen över textrutan där du skriver inlägget (i avancerat läge (eller redigera ett befintligt inlägg)).

Permalänk
Medlem
Skrivet av Elgot:

Ibland kan någon allsmäktig förbarma sig över inlägg...
Skriv

[CODE]//kod här[/CODE]

eller markera koden och tryck på brädgårdsknappen över textrutan där du skriver inlägget (i avancerat läge (eller redigera ett befintligt inlägg)).

Tack så mycket skall göra det i framtiden så det blir läsbart

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Bra att du kom fram till en lösning!
Ett par kommentarer:
Eftersom du inte sparar data i klassen Kontroll så kan du flytta in de två metoderna i klassen HängaGubbe. Du behöver säga att de är static då bara (static void OrdKontroll(...) och static bool RättaOrd(...)).
Att en metod är static betyder att den kan användas utan att klassen instansieras, så du slipper skapa ett objekt innan du använder metoden.

Nu när du har ett fungerande program så kan du börja fundera på hur saker kan delas upp för att få det hela lite mer överskådligt. Ett sätt att göra det är att bryta ut gränssnittskod (dina WriteLine och ReadLine) så att logiken får ligga för sig själv. Det gör det lättare att å ena sidan se vad som kommer göras på skärmen och å andra sidan varför.

Visa signatur

.<

Permalänk
Medlem

Japp riktigt skönt men som man vet kommer man stöta på fler of fler problem under resans gång.
Dock sitter jag just nu och läser om listor och funderar på att ev försöka använda en sådan ist för att kontrollera om orden stämmer och om bokstäverna finns i ordet ect.
Man ska ju även när man väljer att börja spela spelet också få välja max antal fel man får gissa.
Som det ser ut nu så tänkte jag att en lista som jag förstått det med contains kollar om en tex bokstav finns i listan?
Isåfall är det ett bra sett att kontrollera om det finns och finns det ej så får man fel += 1; och det finns självklart även en int som heter maxfel och de är den som användaren ger ett värde i början.

Den nya while för själva spelts loop kommer ha dessa istället för enbart !rättord eftersom spelet ska även avbrytas om man gissar fel förmånga gånger och får då även ett medelande att man tyvärr gissat fel för många gånger och har därmed förlorat spelet. Man får även se det korrekta ordet i slutet men de är väldigt simpelt att göra.

while(!rättord && fel < maxfel) { // Inne i spel loopen }

Men måste säga att även om det är frustrerande bitvis när man själv inte har kunskapen om hur vissa saker fungerar eller har arbetat tillräckligt mycket med programmering rent praktiskt där man faktiskt lär sig mest av allt.
Så är det väldigt kul och när man väl löser något som vart jobbigt för en själv så får man en liten glädje kick.
Så efter detta ska ja försöka arbeta oftare mer praktiskt och hitta på nya uppgifter själv eller leta uppgifter för att försöka öka mitt kunnande och vana vid att programmera och få in tänket hur man löser olika problem.

Tack alla som skrivit.
Kommer mer update senare när jag kommit längre med projektarbetet.

MVH
Necry

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Riktigt kul nu för jag tagit mig vidare och har även klurat ut minst 3 olika lösningar på exakt samma sak!:D
Sen har jag även börjat använda

try { } catch { }

Detta är något jag saknat grymt länge och velat ha i mina program så de inte krashar och kan fortsätta.
T.ex om en användare skriver in helt fel i en meny när man ska skriva svar mellan 1-4 så krashar programmet
Men med detta så löste de sig jätte bra och programmet slipper krasha:)

Jag har inte gjort klart mitt program än men jag känner just nu att jag har goda chanser att slutföra det och har de mesta klart i huvudet redan.
Dock ska jag fundera mer på exakt hur mina klasser kommer se ut och upplägget för att få det så tydligt som möjligt.
Även att klasser ska ev vara åter användbara i nya program jag gör.

Det man kan göra just nu är
4 st val i en meny
Lägg till Ord
Visa Alla Ord
Spela
Avsluta

I lägg till ord så får man välja när man kommer in så länge man inte överskridit gränsen för max antal ord i programmet som är satt till 5 som även uppgiften sagt.
Man ser även hur många ord man har lagt till och hur många som är max genom ordtillagda / maxantalord tex 0 / 5 från början
Efter man lägger till ett ord så sorteras även orden som ligger i en Lista så de hamnar i rätt bokstavs ordning.

Man kan inte spela än men man kan välja max antal fel man får ha och jag har ganska klart nu för mig hur jag ska styra programmet när bokstäverna kontrolleras mot det hemliga ordet och om ingen bokstav fanns med öka spelarens int antalfel += 1; och sen finns det en int antalfelmax; som sätts av användaren och om den fanns så läggs bokstaven till på samtliga ställen där de finns i ordet och man kommer även att se ett text fält där man ser de bokstäverna man gissats fel.

Tycker det blivit grymt kul nu när jag börjat få till det och fått mer idéer.
Tack alla som skrivit och de känns som det i slut ändan var värd allt frustration man hade i början

Kan ladda upp programmet ev senare om någon är intresserad att testa det.

Ha en trevlig helg alla !

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Det ser bra ut, du är på rätt väg.

Ett tips:

Försök skriva allt på engelska. Sen försöker du bryta ut saker till olika metoder, istället för att köra allt i main.

Typ:

private bool VerifyIfLetterExistsInSecretWord(char letter){ ..kod.. } private void UpdateGuessWithInputLetter(char letter) { .. skriv till skärmen .. } private void UpdateHangManBodypart() { ..ble blo blu .. }

etc, etc.

Om man skriver sina metod- och variabelnamn tydligt, behöver man aldrig kommentera sin kod, har man skrivit det bra, kan man sen läsa koden som man läser en bok, det är jättesmidigt!

Sen det där med try - catch.
Man ska aldrig använda det som ersättning för att programmet krashar, man skall använda olika checkar, typ if, else etc. Try catch använder man för att man provar göra nåt och om det inte funkar, fångar man det som är fel, för att skriva det i felloggen, så man kan åtgärda buggen/Felet som gjorde att det catchades.

Det är jätteviktigt senare, då en try/catch tar mycket mer datorkraft än if/else etc. Så det är liksom en sista livlina, och kommer köras för man har gjort fel.

Permalänk
Hedersmedlem
Skrivet av Ernesto:

Om man skriver sina metod- och variabelnamn tydligt, behöver man aldrig kommentera sin kod, har man skrivit det bra, kan man sen läsa koden som man läser en bok, det är jättesmidigt!

Det är det väl kanske inte alla som håller med om, men det är natruligtvis bra att vara tydlig. Särskilt om man inte tänker skriva kommentarer.

Skrivet av Ernesto:

Try catch använder man för att man provar göra nåt och om det inte funkar, fångar man det som är fel, för att skriva det i felloggen, så man kan åtgärda buggen/Felet som gjorde att det catchades.

Samt till oförutsägbara (eller i alla fall svårförutsägbara) fall som interaktion med omvärlden (Fanns det tillräckligt mycket minne? Får man verkligen döpa en fil så?).

Permalänk
Medlem
Skrivet av Elgot:

Det är det väl kanske inte alla som håller med om, men det är natruligtvis bra att vara tydlig. Särskilt om man inte tänker skriva kommentarer.

Du har rätt, jag tar om det:

Om man skriver metoder och variabelnamn tydligt och läsbart behöver man färre kommentarer i koden. Riktigt välskriven kod behöver nästan aldrig kommenteras.

Det är ofta värt att döpa variabler och metoder etc. tydligt annat än när det är självklart, tex "i" i en loop.

Permalänk
Medlem

Tack för alla bra tips jag tar emot o bockar för de info jag fått, så att jag kan lära mig mer och bli bättre på detta.

-Engelska-
Anledningen att det inte är på Engelska är pga av kursen som är helt skriven i svenska och spel projektet´s idé är skrivet på engelska med där man sett en liten glimt av det.
Jag håller med att ska man programmera borde språket hållas på Engelska för att så många som möjligt ska kunna förstå koden och kunna använda den och inte blanda in 3 olika språk i koden.

Try/Catch
Anledningen att jag valde att testa på detta var för att de villa man skulle testa det och även att om man har en kod som koden under här och matar in en bokstav så krashar programmet direkt eftersom den får en bokstav.
Vi har inte fått lära oss något direkt sett att kunna förhindra den kraschen förutom att göra ev på detta sättet som jag gjort med try catch.
Har använt det tex när spelaren ska mata in ett alternativ i menyn som loopas sålänge användaren inte anger 4 som är avslutar, och om användaren matar in något som t.ex en bokstav här som skulle krasha programmet så struntar den i att gå vidare i programmet och frågar om användaren om ett alternativ i menyn igen.
Jag upplever att det har gjort så mitt program inte behöver krascha längre av att användaren matar in bokstäver till tex int som krashar programmet eller något annat som inte platsar att mata in där.
Om det finns något annat smidigt och lätt sätt så får ni gärna upplysa mig om det. Det kanske är ett problem som ligger mer vid när man programmerar i console som inte riktigt är på samma sett när man börjar med windows programmering ect?

int tal1 = Convert.ToInt32(Console.ReadLine());

EN ANNAN FRÅGA
Denna frågan kanske ni tycker låter konstig eftersom jag redan är i fullgång med att programmera.
Jag undrar lite vad ni säger om t.ex flödesscheman.
När jag kommer till själva spelandet i hänga gubbe.
Behöver man rita ut en instruktion där det står t.ex "Kontrollera bokstav hemligt ord" sen efter ett villkor "fanns bokstaven i ordet"?
Eller kan man helt enkelt skippa instruktionen och köra på ett villkor direkt för det säger ju egentligen samma sak.
Användaren matar in ord sen kommer villkor "fanns bokstaven i ordet" "ja" "nej" borde väl räcka eller vad skulle ni säga?

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Jag tycker inte du ska använda Try/Catch för att konvertera en sträng till en int. Det finns en mycket bättre metod för det.

int number; string value = "123"; if(int.TryParse(value, out number)) { //Kunde konvertera till int } else { //Kunde inte konvertera till int }

Permalänk
Medlem

angående try/catch för att ta hand om felaktig indata, så kan (bör?) man istället använda sig av TryParse(). funktionen returnerar true om den kan tolka in-strängen som en int och false om den inte kan det. resultatet hamnar i den variabel du skickar in som result-parameter.
(funktionen finns för en hel massa data-typer, så det är bara att testa att slänga på TryParse om man måste omvandla en sträng till exempelvis ett decimaltal.)

ex:

string input = Console.ReadLine(); int result; if (int.TryParse(input, out result)) { Console.WriteLine("w00t! '{0}' tolkades som talet {1}!", input, result); } else { Console.WriteLine("'{0}' är inget heltal... (result innehåller {1})", input, result); }

EDIT: @jonke: great minds think alike...

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av jovnas:

EDIT: @jonke: great minds think alike...

Visst är det så

Permalänk
Medlem

Tack så mycket båda jag ska testa på det sen:)

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem
Skrivet av necry:

Tack så mycket båda jag ska testa på det sen:)

Try/Catch ska du undvika så mycket du kan då det lätt kan bli att man använder det för att dölja dålig kod.

Här har du lite riktlinjer: http://stackoverflow.com/questions/1722964/when-to-use-try-ca...

Permalänk
Medlem

Någon som använder yED för att göra sina flödescheman?
Undrar om man kan connecta Edge mot Edge eftersom de bara snappar mot former för mig

Arbetade med Dia lite eftersom jag iaf kan koppla samman strecken med pilarna i varandras sträck som jag inte lyckades med i yED och har inte tid att lära mig ett helt program extra just nu.
Dock var dia´s snapp system helt skevt och allt blev fel så körde utan det och blev rakare

Visa signatur

-PC- HAF932 - i7 920d0 oc 3.8ghz - P6TDELUXE v2 - Asus 7950 3GB TOP - Samsung 830 128gb - 2xWD 1TB Black - Asus Xonar Essence STX - Logitech G400 - Sennheiser pc360G4me - Logitech Z5500 - S27a950d 120hz - 2233RZ 120hz
GAME | Dota2 | Age of Conan
Youtube: http://www.youtube.com/user/b4nto

Permalänk
Medlem

Aldrig använt, aldrig gjort flödesschema, skriver specar i word.

Permalänk
Inaktiv

Den enklaste lösningen tänker jag mig är att köra ungefär

array[] sökt
array[] visas, fylld med -

för varje inmatad bokstav 'b'
kolla om sökt[i] == b, sätt i så fall visas[i] = b
kolla om det finns några - kvar i visas, är det 0 avsluta programmet
end