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
GÅ
statisk Arraylist <String> triedLetters = new Arraylist <String> (); statiske int gjetninger = 0
GÅ
statiske String secretWord
GÅ
public static int main (String [] args) {
secretWord = askForWord ()
GÅ
while (playingGame) {
printBodyAndTriedLetters ()
GÅ
printWordSoFar ()
GÅ
getLetter ()
GÅ
if (gameStatus () == 1) {
System.out.println ( "Du vinner!")
GÅ
returnere 0
GÅ
} Else if (gameStatus () == -1) {
System.out.println ( "Du mister Secret ord var:" + secretWord)
GÅ
returnere 0
GÅ
}
System.out.println ()
GÅ
System.out.println ()
GÅ
System.out.println ()
GÅ
}
}
}
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))
GÅ
System.out.print ( "Hva er hemmeligheten bak ordet:")
GÅ
String ord = in.readLine (). ToLowerCase ()
GÅ
for (int x = 0; x <100; x ++) {
System.out.println ()
GÅ
}
avkastning (word)
GÅ
}
(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")
GÅ
if (gjetninger> = 2) System.out.print ( "BODY")
GÅ
if (gjetninger> = 3) System.out.print ( "VENSTRE ARM")
GÅ
if (gjetter> = 4) System.out.print ( "høyre arm")
GÅ
if (gjetninger> = 5) System.out.print ( "LEFT LEG")
GÅ
if (gjetninger> = 6) System.out.print ( "høyre ben")
GÅ
// Du vil bokstavene skrives i alfabetisk rekkefølge.
Collections.sort (triedLetters)
GÅ
for (String brev: triedLetters) {
System.out.print (brev + "")
GÅ
}
System.out.println ()
GÅ
}
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)
GÅ
boolean funnet = false
GÅ
for (String t: triedLetters) {
if (letter.startsWith (t)) {
System.out.print (t)
GÅ
found = sant
GÅ
}
}
if (! funnet) System.out.print ( "_")
GÅ
}
}
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
GÅ
for (int x = 0; x <secretWord.length (); x ++) {
String brev = secretWord.substring (x)
GÅ
boolean funnet = false
GÅ
for (String t: triedLetters) {
if (letter.startsWith (t)) {
found = sant
GÅ
}
}
if (! funnet) løses = false
GÅ
}
// 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
GÅ
else if (! løses && gjetter> = 6) returnerer -1
GÅ
ellers return 0
GÅ
}