From 04a38a41c9d7fdc587f0eb0ae228aee41c7e178d Mon Sep 17 00:00:00 2001 From: Patrick Tschuchnig Date: Tue, 27 Aug 2019 13:27:50 +0200 Subject: [PATCH] erste rev. des vom web importierten programms --- gametest.py | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 gametest.py diff --git a/gametest.py b/gametest.py new file mode 100644 index 0000000..25dc9c7 --- /dev/null +++ b/gametest.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python +#coding=utf-8 + +import pygame, sys, time, os, RPi.GPIO as GPIO +from pygame.locals import * + +#GPIO +startPin = 32 +errorPin = 31 +enableErrorTimeAddingPin = 15 +shutdownPin = 3 + +GPIO.setmode(GPIO.BOARD) +GPIO.setup(startPin, GPIO.IN) +GPIO.setup(errorPin, GPIO.IN) +GPIO.setup(enableErrorTimeAddingPin, GPIO.IN) +GPIO.setup(shutdownPin, GPIO.IN) + +#other constants +timePerError = 5 +screenSizeX = 900 +screenSizeY = 900 + + +pygame.init() + + +#colors +redColor = pygame.Color(255, 0, 0) +blackColor = pygame.Color(0, 0, 0) +whiteColor = pygame.Color(255, 255, 255) +grayColor = pygame.Color(128, 128, 128) +mainFontColor = redColor + +#fonts +font = pygame.font.Font('freesansbold.ttf', 90) + +def toggle_fullscreen(): + screen = pygame.display.get_surface() + tmp = screen.convert() + caption = pygame.display.get_caption() + cursor = pygame.mouse.get_cursor() # Duoas 16-04-2007 + + w,h = screen.get_width(),screen.get_height() + flags = screen.get_flags() + bits = screen.get_bitsize() + + pygame.display.quit() + pygame.display.init() + + screen = pygame.display.set_mode((w,h),flags^FULLSCREEN,bits) + screen.blit(tmp,(0,0)) + pygame.display.set_caption(*caption) + + pygame.key.set_mods(0) #HACK: work-a-round for a SDL bug?? + + pygame.mouse.set_cursor( *cursor ) # Duoas 16-04-2007 + + return screen + +def clearScreen(): + screen.fill(blackColor) + return + +def handle_events(): + print("Status der Pins:") + print("Start Pin:", GPIO.input(startPin)) + print("Error Pin:", GPIO.input(errorPin)) + print("Stop Pin:", GPIO.input(shutdownPin)) + + #if GPIO.input(shutdownPin) == True: + #shutdown_raspberry() + for event in pygame.event.get(): + if event.type == KEYDOWN and event.key == K_ESCAPE: + shutdown_raspberry() + else: + if event.type == pygame.QUIT or event.type == KEYDOWN: + exit_application() + return + +def exit_application(): + pygame.quit() + sys.exit() + return + +#def shutdown_raspberry(): + #os.system("sudo shutdown -h now") + return + + +pygame.mouse.set_visible(False) # hide mouse + +screen = pygame.display.set_mode((screenSizeX, screenSizeY), pygame.FULLSCREEN) +#pygame.display.set_caption('Heisser Draht') # not required for fullscreen application + +#screen = toggle_fullscreen() + +while True: # main loop +#global label storage + time_surface = 0 + errors_surface = 0 + time_rectangle = 0 + errors_rectangle = 0 + + header_surface = font.render('Dr' + u'ü' + 'cken Sie Start!', True, mainFontColor) + header_rectangle = header_surface.get_rect() + header_rectangle.topleft = (0, 100) + + screen.blit(header_surface, header_rectangle) + pygame.display.flip() + + while GPIO.input(startPin) == False: #wait for the user to press start button + handle_events() + + start_time = int(time.time()) + + errors = 0 + errorAdded = False + + justStarted = True + + + header_surface = font.render('Spiel l' + u'ä' + 'uft!', True, mainFontColor) + + + while True: # game running + handle_events() + + + if GPIO.input(errorPin) == True: + if errorAdded == False: + errors += 1 + errorAdded = True + else: + errorAdded = False + if GPIO.input(enableErrorTimeAddingPin) == True: + int_time = int(time.time()) - start_time + errors * timePerError + + int_time = int(time.time()) - start_time + + time_surface = font.render('Zeit: ' + str(int_time) + 's', True, mainFontColor) + time_rectangle = time_surface.get_rect() + time_rectangle.topleft = (0, 300) + + errors_surface = font.render('Fehler: ' + str(errors), True, mainFontColor) + errors_rectangle = errors_surface.get_rect() + errors_rectangle.topleft = (0, 400) + + + clearScreen() + screen.blit(errors_surface, errors_rectangle) #errors + screen.blit(time_surface, time_rectangle) #time + screen.blit(header_surface, header_rectangle) #header + + pygame.display.flip() + + if GPIO.input(startPin) == False: + justStarted = False + if GPIO.input(startPin) == True and justStarted == False: + break + + clearScreen() + header_surface = font.render('Game over!', True, mainFontColor) + + screen.blit(errors_surface, errors_rectangle) #errors + screen.blit(time_surface, time_rectangle) #time + screen.blit(header_surface, header_rectangle) #header + + pygame.display.flip() + + while GPIO.input(startPin) == False: + handle_events() + + while GPIO.input(startPin) == True: + handle_events() + + while GPIO.input(startPin) == False: + handle_events() + + clearScreen() + time.sleep(1)