69 lines
2.8 KiB
Python
Executable File
69 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from libstormgames.libstormgames import *
|
|
|
|
# Initial variable settings
|
|
mode = "menu"
|
|
sounds = initialize_gui("Numnastics")
|
|
|
|
def game(mode):
|
|
pygame.mixer.music.pause()
|
|
i = 0
|
|
startTime = time.time()
|
|
tries = 0
|
|
numberList = list("123456789")
|
|
random.shuffle(numberList)
|
|
while ''.join(numberList) != "123456789":
|
|
event = pygame.event.wait()
|
|
if event.type == pygame.KEYDOWN:
|
|
# Escape is the back/exit key, close the game if not playing, or return to menu if playing.
|
|
if event.key == pygame.K_ESCAPE:
|
|
if mode != "menu":
|
|
mode = "menu"
|
|
return mode
|
|
elif mode == "menu": exit_game()
|
|
elif event.key in [pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, pygame.K_5, pygame.K_6,pygame.K_7, pygame.K_8, pygame.K_9]:
|
|
i = numberList.index((pygame.key.name(event.key)))
|
|
speak(numberList[i])
|
|
elif event.key in [pygame.K_LEFT, pygame.K_UP]:
|
|
if i > 0: i = i - 1
|
|
speak(numberList[i])
|
|
elif event.key in [pygame.K_RIGHT, pygame.K_DOWN]:
|
|
if i < len(numberList) - 1: i = i + 1
|
|
speak(numberList[i])
|
|
elif event.key == pygame.K_SPACE:
|
|
speak(str(' '.join(numberList[i:len(numberList)])))
|
|
continue
|
|
elif event.key == pygame.K_RETURN:
|
|
if i != -1:
|
|
reversedNumberList = numberList[i:len(numberList)]
|
|
reversedNumberList.reverse()
|
|
del numberList[i:len(numberList)]
|
|
numberList.extend(reversedNumberList)
|
|
tries = tries + 1
|
|
sounds['flip'].play()
|
|
speak(str(' '.join(numberList[i:len(numberList)])))
|
|
else:
|
|
i = -1
|
|
sounds['error'].play()
|
|
endTime = round(time.time() - startTime, 2)
|
|
message = ["Congratulations! You beat Numnastics in " + str(tries) + " tries."]
|
|
if int(endTime / 60) == 1:
|
|
message.append("Your time was " + str(int(endTime / 60)) + " minute and " + str(round(endTime % 60, 2)) + " seconds.")
|
|
else:
|
|
message.append("Your time was " + str(int(endTime / 60)) + " minutes and " + str(round(endTime % 60, 2)) + " seconds.")
|
|
display_text(message)
|
|
sounds['win'].play()
|
|
time.sleep(sounds['win'].get_length())
|
|
return "menu"
|
|
|
|
# Game starts at main menu
|
|
mode = game_menu("start game", "instructions", "donate", "credits", "learn sounds", "exit_game")
|
|
while mode != "exit_game":
|
|
if mode == "menu": mode = game_menu("start game", "instructions", "donate", "credits", "learn sounds", "exit_game")
|
|
if mode == "start game": mode = game(mode)
|
|
if mode == "learn sounds": mode = learn_sounds(sounds)
|
|
time.sleep(.001)
|
|
|