Iedereen herinnert zich het woord raden spel Hangman als een kind spelen. Een speler kiest in het geheim een woord. De andere speler heeft te raden brieven die opgenomen in het woord zijn. Als ze gelijk heeft, zijn de letters toegevoegd. Als ze verkeerd is, wordt een ander lichaamsdeel voor de beul getekend met. Deze tutorial zal je leren hoe maak je een eenvoudige Hangman spel dat kan worden gespeeld door twee mensen met behulp van de Java programmeertaal.
Wat die u nodig hebt
- Computer
- Java Runtime Environment
- Java Development Kit
- Teksteditor of Java IDE
Het bouwen van de hoofdlus spel. Maak een klasse met de naam Main en schrijven de volgende belangrijkste functie.
klasse Main {}
statische Boole playingGame = true
GAAN
statische ArrayListtriedLetters = new ArrayList (); statische int gissingen = 0
GAAN
statische String secretWord
GAANopenbare statische int main (String [] args) {}
secretWord = askForWord()
GAAN
terwijl (playingGame) {}
printBodyAndTriedLetters()
GAAN
printWordSoFar()
GAAN
getLetter()
GAAN
Als (gameStatus() == 1) {}
System.out.println ("You win!")
GAAN
retourneren 0
GAAN
} else if (gameStatus() == -1) {}
System.out.println ("je verliest! Geheime woord was: "+ secretWord)
GAAN
retourneren 0
GAAN
}
System.out.println)
GAAN
System.out.println)
GAAN
System.out.println)
GAAN
}
}
}Dit legt de structuur van het spel en geeft u vijf functies die u moet schrijven om te voltooien van het spel: askForWord(), printBodyAndTriedLetters(), printWordSoFar(), getLetter() en gameStatus().
Schrijf de askForWord functie. Deze functie zal worden vrij eenvoudig. Gebruik de BufferedReader-klasse die wordt geleverd met Java te krijgen van een geheim woord vanuit de console, en vervolgens uitprinten van een honderdtal lijnen te verbergen van het woord.
openbare statische reeks askForWord() {}
BufferedReader = in nieuwe BufferedReader(new InputStreamReader(System.in))
GAAN
System.out.Print ("wat is het geheime woord:")
GAAN
Tekenreeksexpressie word = in.readLine().toLowerCase()
GAAN
voor (int x = 0; x< 100;="" x++)="">
System.out.println)
GAAN
}
terugkeer (word)
GAAN
}
(zie verwijzingen-1)Schrijf de printBodyAndTriedLetters() functie. Hiervoor, je bent gonna uitprinten van de meeloper lichaamsdelen op basis van het aantal gissingen die de speler tot nu toe heeft gehad, en print alle de brieven die zij heeft geprobeerd.
openbare statische nietige printBodyAndTriedLetters() {}
Als nul gissingen, zal geen van deze evalueren als waar.
Als twee, dan de eerste en de tweede zal worden geëvalueerd als waar.Als (gissingen > = 1) System.out.print ("HEAD")
GAAN
Als (gissingen > = 2) System.out.print ("lichaam")
GAAN
Als (gissingen > = 3) System.out.print ("linker ARM")
GAAN
Als (gissingen > = 4) System.out.print ("recht ARM")
GAAN
Als (gissingen > = 5) System.out.print ("linker been")
GAAN
Als (gissingen > = 6) System.out.print ("recht LEG")
GAANWilt u de letters in alfabetische volgorde afgedrukt.
Collections.sort(triedLetters)
GAAN
voor (String brief: triedLetters) {}
System.out.Print (brief + "")
GAAN
}
System.out.println)
GAAN
}Schrijven van printWordSoFar(). U wilt elke letter in het woord met de beproefde letters vergelijken en die brieven die overeenkomen met afdrukken. Als geen overeenkomende waarde wordt gevonden, die u wilt afdrukken een onderstrepingsteken ('_').
openbare statische nietige printWordSoFar() {}
voor (int x = 0; x< secretword.length();="" x++)="">
Tekenreeks brief = secretWord.substring(x)
GAAN
Boolean gevonden = false
GAAN
voor (String t: triedLetters) {}
Als (letter.startsWith(t)) {}
System.out.Print(t)
GAAN
gevonden = true
GAAN
}
}
Als (! gevonden) System.out.print("_")
GAAN
}
}Schrijven van getLetter(). Dit is eigenlijk eenvoudiger dan het lijkt. De brief zal getest worden door gameStatus, dus alles wat je hoeft te doen hier is hergebruik van de code uit stap 2 voor het ophalen van een brief van de gebruiker.
Schrijven van gameStatus(). Om dit te doen, door de code in printWordSoFar() om te testen of een brief bestaat opnieuw te gebruiken. U hoeft alleen te veranderen in een kleine manier: om te testen of de lus erin geslaagd elke iteratie. Het volgende zal werken:
openbare statische nietige gameStatus() {}
Boolean opgelost = true
GAAN
voor (int x = 0; x< secretword.length();="" x++)="">
Tekenreeks brief = secretWord.substring(x)
GAAN
Boolean gevonden = false
GAAN
voor (String t: triedLetters) {}
Als (letter.startsWith(t)) {}
gevonden = true
GAAN
}
}
Als (! gevonden) opgelost = false
GAAN
}
Als opgelost, resultaat 1.
Als niet opgelost en game over, retourneert -1.
Als geen van de bovenstaande, 0 retourneren
Als (opgelost) terugkeer 1
GAAN
anders als (! opgelost && gissingen > = 6) -1 terug
GAAN
keren anders 0
GAAN
}