Permalänk
Medlem

Programering hjälp (Hangman)

Tjenare Sweclockers. Jag har en programmerings uppgift där jag ska skapa en hangman class. Jag har lyckats skriva en class med en metod (HM) men jag fick reda på att uppgiften skulle följa en mall och då började jag känna mig lite borta. Kan någon hjälpa mig att skriva om min kod till mallen?

Hangman:

import java.util.Scanner; public class HM { static Scanner in = new Scanner(System.in); public static void main (String[] hej) { String ord = "bulle"; char[] hemligt = {'_','_','_','_','_'}; int d = 0; int count = 0; System.out.println("HangMan"); while(d < ord.length() ) { System.out.print("Hemligt ord: "); System.out.println(hemligt); System.out.println("Skriv en bokstav: "); String BS = in.next(); String [] miss = {BS}; for(int i = 0 ; i < ord.length() ; i++) { if (BS.charAt(0) == ord.charAt(i)) { hemligt[i] = BS.charAt(0); d++; } } System.out.print("Testade bokstäver: "); System.out.println(BS.charAt(0)); System.out.println("\n"); } /* while() { System.out.println("GAME OVER \n Det Hemliga Ordet Var: " + ord);; GO; } */ while(d == 5) { System.out.println("Grattis!. Det Hemliga Ordet Var: " + ord);; d=d+1; } } }

Mallen:

public class Mall_HM { // Instansvariabler: String ord; //Ord som ska gissas char[] gissat; // tecken som är rätta. -or i början String miss = ""; //tecken som inte passar in // Metoder HangMan (String gissa) //Konstruktor { // initierar ordet som ska gissas // Deklarerar ett fält som ska innehålla de rätta tecknen - or // initierar fältet till -or } // Metoden spela har den gissade tecknet som inparameter public boolean spela(char g) { // letar upp platser i ordet där tecknet finns // returnerar true om tecknet fanns } // boolean klart() testar om spelet är klart public boolean klart() { } // String toString() skriver ut det gissade fältet // samt felaktiga tecken. public String toString() { } }

Mvh Christoffer

Permalänk
Medlem

Du ska ju bara bryta ned problemet/uppgiften i mindre delar, borde inte vara några problem med att förstå var de olika delarna ska vara.
Sen får man ju skapa en instans av Hangman klassen i en mainmetod för att spela:P

public static void main ()
{
Hangman hm = new Hangman("bulle"); //lr ta in ordet via input?
while(!hm.klart()){
//ta input
if(hm.spela(input)){
//print/action om d va rätt?
}else{
//print/action vid fel?
}
}
//slut?

Du borde förstå, annars är det dags å lära sig! vill ju inte hjälpa för mkt
hoppas du vet hur du ska göra nu iaf~~

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Tack Gnejs För din hjälp.
Har delat upp min uppgift och lagt det in i mallen.
Ser detta ut som om de tär på rätt spår ?

import java.util.Scanner; public class Hangman1 { // Instansvariabler: static Scanner in = new Scanner(System.in); String ord; char[] gissat; String miss = ""; char[] hemligt = {'_','_','_','_','_'}; int d = 0; int count = 0; // Metoder Hangman1 (String gissa) //Konstruktor { String ord = gissa; while(d < ord.length() ) { System.out.print("Hemligt ord: "); System.out.println(hemligt); System.out.println("Skriv en bokstav: "); String BS = in.next(); String [] miss = {BS}; System.out.print("Testade bokstäver: "); System.out.println(BS.charAt(0)); System.out.println("\n"); } } // Metoden spela har den gissade tecknet som inparameter public boolean spela(String BS) { // letar upp platser i ordet där tecknet finns for(int i = 0 ; i < ord.length() ; i++) { if (BS.charAt(0) == ord.charAt(i)) { hemligt[i] = BS.charAt(0); d++; } } return true; } // boolean klart() testar om spelet är klart public boolean klart() { while(d == 5) { System.out.println("Grattis!. Det Hemliga Ordet Var: " + ord);; d=d+1; } return true; } // String toString() skriver ut det gissade fältet // samt felaktiga tecken. public String toString() { } public static void main() { Hangman1 hm = new Hangman1("bulle"); while(!Hangman1.klart()) { if(Hangman1.spela(input)) { //print/action om d va rätt? } else { //print/action vid fel? } } } }

Permalänk
Medlem

Tror du har en del kvar å läsa i din bok eller liknande!
Samtliga variabler bör vara private.
Du ska inta ha några whileloopar i klassen förutom den som kontrollerar spelrundan.
Dvs Whilen i konstruktorn skall inte vara där, konstruktorn skall endast göra objektet redo för användning, dvs i d här fallet, sätta det hemliga ordet.
I "klart()" behöver du bara en IF-sats, dvs ingen loop, if-satsen skall kolla om spelet är slut, dvs antagligen, max antal försök gjorda, eller det hemliga ordet hittat ?
I main så skall du invokera metoder på objektet "hm", inte på själva klassen. Bästa vore om du har all logik i en separat klass då main klassen/metoden endast skall starta 'applikationen' dock kan det vara överkurs för denna uppgiften?

Kan rekommendera http://academicearth.org/lectures/programming-methodology-int... om du har tid, den kom upp i en annan tråd och verkar som något vettigt att lyssna på, förutsatt att du vill lära dig om programmering, om du bara vill "göra klart" uppgiften så är d väl bara trixa tills det funkar!:P

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Tack Gnejs för ditt svar. jag tror att jag kan få den att fungera nu (efter lite ändringar)
Kollade lite på länken och den verkar vara bra och jag tar och kollar på den imorgon, just nu så prioriterar jag att bli färdig med uppgiften och mina andra läxor.

Tack igen för din hjälp, jag återkommer om jag får några problem ^^

Mvh Christoffer

Permalänk
Medlem

Oki låter bra! Lycka till!;)

Mvh
Gnejs

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |