Hvordan lage en Hangman spill med Java

Alle husker spille ord-gjettelek Hangman som barn. En spiller hemmelighet velger et ord. Den andre spilleren har til å gjette bokstaver som kan være i ordet. Hvis hun er riktig, blir brevene til. Hvis hun er galt, er en annen kroppsdel ​​for bøddelen trukket i. Denne opplæringen vil lære deg hvordan å lage en enkel Hangman spill som kan spilles av to personer som bruker Java programmeringsspråk.

Bruksanvisning

1 Bygg hovedspillet loop. Lag en klasse kalt Main, og skriver følgende hovedfunksjon.

klasse Hoved {
statisk boolean playingGame = sant

statisk Arraylist <String> triedLetters = new Arraylist <String> (); statiske int gjetninger = 0

statiske String secretWord

public static int main (String [] args) {
secretWord = askForWord ()

while (playingGame) {
printBodyAndTriedLetters ()

printWordSoFar ()

getLetter ()

if (gameStatus () == 1) {
System.out.println ( "Du vinner!")

returnere 0

} Else if (gameStatus () == -1) {
System.out.println ( "Du mister Secret ord var:" + secretWord)

returnere 0

}
System.out.println ()

System.out.println ()

System.out.println ()

}
}
}

Dette legger ut spillets struktur og gir deg fem funksjoner du trenger for å skrive for å fullføre spillet: askForWord (), printBodyAndTriedLetters (), printWordSoFar (), getLetter () og gameStatus ().

2 Skriv askForWord funksjon. Denne funksjonen vil være ganske enkel. Bruk BufferedReader klassen som følger med Java for å få et hemmelig ord fra konsollen, og deretter skrive ut et hundretalls linjer for å skjule ordet.

public static String askForWord () {
BufferedReader i = ny BufferedReader (ny InputStreamReader (System.in))

System.out.print ( "Hva er hemmeligheten bak ordet:")

String ord = in.readLine (). ToLowerCase ()

for (int x = 0; x <100; x ++) {
System.out.println ()

}
avkastning (word)

}
(Se 1 referanser)

3 Skriv printBodyAndTriedLetters () -funksjonen. For dette, du kommer til å skrive ut de hengt kroppsdeler basert på antall gjetninger spilleren har hatt så langt, og skrive ut alle brevene hun har prøvd.

public static void printBodyAndTriedLetters () {
// Hvis null gjetninger, vil ingen av disse vurdere som sant.
// Hvis to, så både den første og andre vil vurdere som sant.

if (gjetninger> = 1) System.out.print ( "hodet")

if (gjetninger> = 2) System.out.print ( "BODY")

if (gjetninger> = 3) System.out.print ( "VENSTRE ARM")

if (gjetter> = 4) System.out.print ( "høyre arm")

if (gjetninger> = 5) System.out.print ( "LEFT LEG")

if (gjetninger> = 6) System.out.print ( "høyre ben")

// Du vil bokstavene skrives i alfabetisk rekkefølge.
Collections.sort (triedLetters)

for (String brev: triedLetters) {
System.out.print (brev + "")

}
System.out.println ()

}

4 Skriv printWordSoFar (). Du ønsker å sammenligne hver bokstav i ordet med prøvd bokstavene og skrive de bokstavene som passer. Dersom det ikke blir funnet, ønsker du å skrive ut en understrek ( "_").

public static void printWordSoFar () {
for (int x = 0; x <secretWord.length (); x ++) {
String brev = secretWord.substring (x)

boolean funnet = false

for (String t: triedLetters) {
if (letter.startsWith (t)) {
System.out.print (t)

found = sant

}
}
if (! funnet) System.out.print ( "_")

}
}

5 Skriv getLetter (). Dette er faktisk enklere enn det ser ut. Brevet vil bli testet av gameStatus, så alt du trenger å gjøre her er gjenbruke kode fra trinn 2 for å hente et brev fra brukeren.

6 Skriv gameStatus (). For å gjøre dette, gjenbruke kode i printWordSoFar () for å teste om et brev eksisterer. Bare du trenger å endre det på en liten måte: å teste om sløyfen har vært vellykket i hver iterasjon. Følgende vil fungere:

public static void gameStatus () {
boolean løst = sant

for (int x = 0; x <secretWord.length (); x ++) {
String brev = secretWord.substring (x)

boolean funnet = false

for (String t: triedLetters) {
if (letter.startsWith (t)) {
found = sant

}
}
if (! funnet) løses = false

}
// Hvis løst, returnerer en.
// Hvis ikke løst, og game over, returnerer -1.
// Hvis ingen av de ovennevnte, returnerer 0.
if (løst) returnerer en

else if (! løses && gjetter> = 6) returnerer -1

ellers return 0

}