erste rev. des vom web importierten programms
This commit is contained in:
parent
e47caa28d2
commit
04a38a41c9
181
gametest.py
Normal file
181
gametest.py
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user