- Details
- Kategorie: Texte für die Seite
- Zugriffe: 47484
developed by Timo Denk (Jan. 2015)
#!/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
buzzerPin = 12
GPIO.setmode(GPIO.BOARD)
GPIO.setup(startPin, GPIO.IN)
GPIO.setup(errorPin, GPIO.IN)
GPIO.setup(enableErrorTimeAddingPin, GPIO.IN)
GPIO.setup(shutdownPin, GPIO.IN)
GPIO.setup(buzzerPin, GPIO.OUT)
#other constants
timePerError = 5
screenSizeX = 640
screenSizeY = 400
startstop_delay = 3000
error_delay = 1000
game_over_screen_duration = 15
text_margin_top = 0
text_margin_left = 10
line_height = 150
buzzer_high = 2000
last_error_detection = 0
last_error_increment = 0
pygame.init()
#colors
redColor = pygame.Color(255, 255, 255)
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', 100)
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():
time.sleep(0.04)
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()
#buzzer
GPIO.output(buzzerPin, not(last_error_increment < get_millis() - buzzer_high))
#print str(not(last_error_increment < get_millis() - buzzer_high))
return
def exit_application():
pygame.quit()
sys.exit()
return
def shutdown_raspberry():
os.system("sudo shutdown -h now")
return
def getUnixTime():
return int(time.time())
def get_millis():
return int(round(time.time() * 1000))
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
last_error_detection = 0
last_error_increment = 0
header_surface = font.render('Let\'s play!', True, mainFontColor)
header_rectangle = header_surface.get_rect()
header_rectangle.midleft = (text_margin_left, (int)(screenSizeY / 2))
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 = getUnixTime()
errors = 0
errorAdded = False
justStarted = True
header_surface = font.render('', True, mainFontColor)
game_started = get_millis()
while True: # game running
handle_events()
if GPIO.input(errorPin) == True:
if errorAdded == False and last_error_increment < get_millis() - error_delay:
errors += 1
last_error_increment = get_millis()
else:
last_error_detection = get_millis()
errorAdded = True
else:
errorAdded = False
int_time = getUnixTime() - start_time
if GPIO.input(enableErrorTimeAddingPin) == True:
int_time = getUnixTime() - start_time + errors * timePerError
time_surface = font.render('Time: ' + str(int_time) + 's', True, mainFontColor)
time_rectangle = time_surface.get_rect()
time_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 0.5)
errors_surface = font.render('Mistakes: ' + str(errors), True, mainFontColor)
errors_rectangle = errors_surface.get_rect()
errors_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 1.5)
clearScreen()
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
header_rectangle.midleft = (text_margin_left, text_margin_top)
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 and game_started < get_millis() - startstop_delay:
break
clearScreen()
header_surface = font.render('Let\'s play!', True, mainFontColor)
#reposition for game over screen
header_rectangle.topleft = (text_margin_left, text_margin_top)
time_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 1)
errors_rectangle.topleft = (text_margin_left, text_margin_top + line_height * 2)
screen.blit(errors_surface, errors_rectangle) #errors
screen.blit(time_surface, time_rectangle) #time
screen.blit(header_surface, header_rectangle) #header
pygame.display.flip()
gos_shown = get_millis()
while gos_shown > get_millis() - 15000:
handle_events()
if GPIO.input(startPin) == True and gos_shown < get_millis() - 1000:
gos_shown = 0
#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)
CODE (alt)
#!/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():
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
int_time = int(time.time()) - start_time
if GPIO.input(enableErrorTimeAddingPin) == True:
int_time = int(time.time()) - start_time + errors * timePerError
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)
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 19795
Durch Werbung decke ich die laufenden Kosten dieser Seite ab, wie die Joomla Pflege und den Webspace. Für Werkzeug und Material reicht die Werbung aber nicht. Wenn dir die Seite gefällt und du öfters hier bist, würde ich mich über eine kleine Unterstützung und Anerkennung natürlich sehr freuen.
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 49512
Hier gibt es alles andere, was sonst in keine Kategorie gepasst hat.
Hörspiel, der Kaufhaus Komplott:
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 63322
Hier geht es zur: Datenschutzerklärung
Angaben gemäß § 5 TMG:
Inhaber: Ronnie Berzins
Rechtsform: Gewerbe (Steuerform Kleingewerbe)
Name: "Kreative Kiste" Handel, Vermarktung und Bereitstellung von Kreativprodukten
Redaktionell Verantwortlicher gemäß §55: Ronnie Berzins
- Details
- Kategorie: Texte für die Seite
- Zugriffe: 44572
Ronnie, 40 Jahre, verheiratet, vier Kinder, Kälteanlagenbauer, schwäbischer Tüftler&Bastler, Kraftsportler, Jungscharler und ich liebe Milch & Mandel.
Seit 20 Jahren schreibe ich nun Bastelanleitungen und veröffentliche sie schon 17 Jahre im Netz und das Ergebnis seht ihr hier im netz.
Wenn du diese Seite unterstützen möchtest, kannst du das hier gern tun.