Zum Hauptinhalt springen
26e

Tippspiel


Beschreibung​

Spiel, bei welchem man Wörter richtig abtippen muss, bevor die Zeit abläuft.

Programm​

import pgzrun
import random


TITLE = "Typing Game"
WIDTH = 640
HEIGHT = 360
BG_COLOUR = (255, 255, 255)
BLACK = (0, 0, 0)

KEYMAP = {
keys.A: "a",
keys.B: "b",
keys.C: "c",
keys.D: "d",
keys.E: "e",
keys.F: "f",
keys.G: "g",
keys.H: "h",
keys.I: "i",
keys.J: "j",
keys.K: "k",
keys.L: "l",
keys.M: "m",
keys.N: "n",
keys.O: "o",
keys.P: "p",
keys.Q: "q",
keys.R: "r",
keys.S: "s",
keys.T: "t",
keys.U: "u",
keys.V: "v",
keys.W: "w",
keys.X: "x",
keys.Y: "y",
keys.Z: "z",
keys.QUOTE: "ä",
keys.SEMICOLON: "ö",
keys.LEFTBRACKET: "ĂĽ",
keys.SPACE: " "
}

words = []
file = open("wordlist.txt", "r", -1, "utf-8")
for line in file:
# Newline am Zeilenende abschneiden
line = line.rstrip("\n")
# Wort zur Liste hinzufĂĽgen
words.append(line)
file.close()

game = Actor("alien")
game.level = 0
game.text = ""
game.time = 5
MAX_TIME = 10


def update(dt):
game.time = game.time - dt


def draw():
screen.fill(BG_COLOUR)
if game.time < 0:
screen.draw.text(
"GAME OVER", centerx=WIDTH / 2, centery=HEIGHT / 2, fontsize=60, color=BLACK
)
return
screen.draw.text(words[game.level], left=20, top=80, fontsize=60, color=BLACK)
screen.draw.text(game.text, left=20, top=160, fontsize=60, color=(255, 0, 0))
width = WIDTH * game.time / MAX_TIME
screen.draw.filled_rect(Rect((0, 10), (width, 50)), BLACK)


def on_key_down(key):
print(key)
if game.time < 0:
return
if key in KEYMAP:
char = KEYMAP[key]
if keyboard.lshift or keyboard.rshift:
char = char.upper()
game.text = game.text + char
if key == keys.BACKSPACE:
game.text = game.text[:-1]
if game.text == words[game.level]:
game.level = game.level + 1
game.time = game.time + 0.3 * len(game.text)
game.text = ""

pgzrun.go()