Open MarleenGilsing opened 6 months ago
I made Hangman for level 18.
def galg(stap):
if stap == 1:
color white
forward -100
turn 90
forward -50
color black
forward 100
forward -50
color black
if stap == 2:
turn -90
forward 200
if stap == 3:
turn 90
forward 50
if stap == 4:
turn 90
forward 20
if stap == 5:
turn -90
color white
forward -15
color black
forward 30
turn 120
forward 30
turn 120
forward 30
forward -30
turn -150
forward 15
if stap == 6:
turn 120
forward 30
forward -30
turn 60
if stap == 7:
turn 60
forward 30
forward -30
turn 120
if stap == 8:
forward 60
if stap == 9:
turn 30
forward 60
forward -60
turn -30
if stap == 10:
turn -30
forward 60
turn -60
galg_stukjes = 10
aantal_letters = int(input("Uit hoeveel letters bestaat het woord?"))
max_aantal_beurten = galg_stukjes + aantal_letters
woord = []
raad = []
for i in range(1, aantal_letters):
letter = input("wat is letter ", i, "?")
add letter to woord
add '_' to raad
aantal_fouten = 0
print("Het woord bestaat uit ", aantal_letters, " letters ")
print(raad)
for i in range(1, max_aantal_beurten):
if aantal_fouten < galg_stukjes:
letter = input("Welke letter denk je dat er in zit?")
if letter in woord:
for i in range(1, aantal_letters):
if woord[i] == letter:
raad[i] = letter
print("Heel goed! ", raad)
if raad == woord:
print("Hoera! Je hebt het woord geraden!")
aantal_fouten = galg_stukjes + 1
else:
print("Helaas, ", letter, " is niet goed.")
aantal_fouten = aantal_fouten + 1
galg(aantal_fouten)
sleep 1
if aantal_fouten == galg_stukjes:
print("Helaas je hebt verloren")
print("Het woord was ", woord)
There is a problem with this hangman code
Here is hangman code that will work in level 17
define galg with stap :
if stap == 1:
color white
forward -100
turn 90
forward -50
color black
forward 100
forward -50
color black
if stap == 2:
turn -90
forward 200
if stap == 3:
turn 90
forward 50
if stap == 4:
turn 90
forward 20
if stap == 5:
turn -90
color white
forward -15
color black
forward 30
turn 120
forward 30
turn 120
forward 30
forward -30
turn -150
forward 15
if stap == 6:
turn 120
forward 30
forward -30
turn 60
if stap == 7:
turn 60
forward 30
forward -30
turn 120
if stap == 8:
forward 60
if stap == 9:
turn 30
forward 60
forward -60
turn -30
if stap == 10:
turn -30
forward 60
turn -60
galg_stukjes = 10
aantal_letters = ask "Uit hoeveel letters bestaat het woord?"
max_aantal_beurten = galg_stukjes + aantal_letters
woord = []
raad = []
for i in range 1 to aantal_letters:
letter = ask "wat is letter " i "?"
add letter to woord
add '_' to raad
aantal_fouten = 0
print "Het woord bestaat uit " aantal_letters " letters "
print raad
for i in range 1 to max_aantal_beurten:
if aantal_fouten < galg_stukjes:
letter = ask "Welke letter denk je dat er in zit?"
if letter in woord:
for i in range 1 to aantal_letters:
if woord[i] == letter:
raad[i] = letter
print "Heel goed! " raad
if raad == woord:
print "Hoera! Je hebt het woord geraden!"
aantal_fouten = galg_stukjes + 1
else:
print "Helaas, " letter " is niet goed."
aantal_fouten = aantal_fouten + 1
call galg with aantal_fouten
sleep 1
if aantal_fouten == galg_stukjes:
print "Helaas je hebt verloren"
print "Het woord was " woord
And in level 16:
define galg with stap
if stap == 1
color white
forward -100
turn 90
forward -50
color black
forward 100
forward -50
color black
if stap == 2
turn -90
forward 200
if stap == 3
turn 90
forward 50
if stap == 4
turn 90
forward 20
if stap == 5
turn -90
color white
forward -15
color black
forward 30
turn 120
forward 30
turn 120
forward 30
forward -30
turn -150
forward 15
if stap == 6
turn 120
forward 30
forward -30
turn 60
if stap == 7
turn 60
forward 30
forward -30
turn 120
if stap == 8
forward 60
if stap == 9
turn 30
forward 60
forward -60
turn -30
if stap == 10
turn -30
forward 60
turn -60
galg_stukjes = 10
aantal_letters = ask "Uit hoeveel letters bestaat het woord?"
max_aantal_beurten = galg_stukjes + aantal_letters
woord = []
raad = []
for i in range 1 to aantal_letters
letter = ask "wat is letter " i "?"
add letter to woord
add '_' to raad
aantal_fouten = 0
print "Het woord bestaat uit " aantal_letters " letters "
print raad
for i in range 1 to max_aantal_beurten
if aantal_fouten < galg_stukjes
letter = ask "Welke letter denk je dat er in zit?"
if letter in woord
for i in range 1 to aantal_letters
if woord[i] == letter
raad[i] = letter
print "Heel goed! " raad
if raad == woord
print "Hoera! Je hebt het woord geraden!"
aantal_fouten = galg_stukjes + 1
else
print "Helaas, " letter " is niet goed."
aantal_fouten = aantal_fouten + 1
call galg with aantal_fouten
sleep 1
if aantal_fouten == galg_stukjes
print "Helaas je hebt verloren"
print "Het woord was " woord
This hangman code cannot be translated to level 15 because:
Both problems can be solved with some for-loops, but the code is already 100 lines long. I think it is not good for readability to remove more empty lines (there are 16 empty lines in the code).
It is easier when the word consists of a fixed number of characters. This is example code works in level 12 and is hangman without drawing
levens = 10
aantal_letters = 6
max_aantal_beurten = levens + aantal_letters
woord = 'leeg', 'leeg', 'leeg', 'leeg', 'leeg', 'leeg'
raad = '.', '.', '.', '.', '.', '.'
for i in range 1 to aantal_letters
letter =ask 'wat is letter ' i '?'
add letter to woord
remove leeg from woord
for i in range 1 to max_aantal_beurten
if levens is 0
print 'Helaas! Je hebt verloren.'
else
print raad at 1 raad at 2 raad at 3 raad at 4 raad at 5 raad at 6
letter =ask 'Welke letter denk jij dat er in het woord zit?'
if letter in woord
print 'Hoera ' letter ' zit er in'
teller = 1
for l in woord
if l = letter
raad at teller = letter
teller = teller + 1
else
print 'Helaas ' letter ' zit er niet in'
levens = levens - 1
@MarleenGilsing Simon says texual is like 'ik ga op reis en neem mee'? Then we can also play it with multiple players instead of against the computer. I think the main functionality that is needed is checking the sequences (the lists) against each other. So I think this game is possible to create from level 14 because there you can use == to compare lists.
To use the while loop I had to move to level 15. Also in this code it is difficult to make it work since you cannot create a empty list. Here I create two lists with two items 'test' such that when you compare the lists they are the same (but it is not beautiful). But here is a Simon Says code for level 15
colors = 'red', 'blue', 'green', 'yellow'
simon_sequence = 'test', 'test'
define add_random_color
random_color is colors at random
add random_color to simon_sequence
define display_sequence with length
last_index = 2 + length
for place in range 3 to last_index
print simon_sequence at place
sleep 1
clear
define get_player_sequence with length
for i in range 1 to length
color = ask 'what is color number ' i '?'
add color to player_sequence
level = 1
correct = 'True'
print 'Welcome to Simon Says!'
sleep 1
clear
while correct == 'True'
print 'Level ' level
sleep 1
clear
player_sequence = 'test', 'test'
call add_random_color
call display_sequence with level
call get_player_sequence with level
if player_sequence == simon_sequence
print "Correct! Moving on to the next level."
sleep 1
level = level + 1
else
print 'Incorrect! Game Over.'
correct = 'False'
Because Simon says looks like 'ik ga op reis en neem mee' here is level 15 'ik ga op reis en neem mee' with two players.
old_sequence = 'test', 'test'
new_sequence = 'test', 'test'
define add_item with number
item = ask 'What is item number ' number '?'
add item to new_sequence
print item
define show_correct_answer
print 'The correct items are:'
for item in old_sequence
if item != 'test'
print item
define get_player_sequence with length
i = 1
while i < length
call add_item with i
i = i + 1
if new_sequence == old_sequence
call add_item with i
print "Correct! Moving on to the next level."
correct = 'True'
else
print 'Incorrect! Game Over.'
call show_correct_answer
correct = 'False'
return correct
correct = 'True'
level = 1
player = 1
while correct == 'True'
sleep 1
clear
print 'Player ' player
print 'Ik ga op reis en neem mee'
correct = call get_player_sequence with level
level = level + 1
old_sequence = new_sequence
new_sequence = 'test', 'test'
if player == 1
player = 2
else
player = 1
Superleuk @AnneliesVlaar! Ik ga ermee aan de slag!
@AnneliesVlaar Your hangman game is almost ready in PR #5333 :)
It would be cool if we could make a Simon Says adventure. I think it should be do-able, but I'm not sure how to program this code yet.I've asked ChatGPT to help me with a python code for a textual simon says game. It came up with this:
Anybody here that could make this Hedy-proof (for a higher level, like 17)? Or is it just too complicated?
If you like the challenge: I have the same request for hangman ;)