Page 1 of 1

flappy astronaut

Posted: Tue Feb 23, 2016 11:49 am
by karanraspberrypi
how do we add a loop to this code:

Code: Select all

from sense_hat import SenseHat
from time import sleep
from random import randint
from threading import Thread

sense = SenseHat()
sense.clear()

##Globals
game_over = False
RED = (255,0,0)
BLACK = (0,0,0)
BLUE = (0,0,255)
y = 4
speed = +1

def draw_column():
    global game_over
    x = 7
    gap = randint(2,6)
    while x >= 0 and not game_over:
        for led in range(8):
            sense.set_pixel(x,led,RED)
        sense.set_pixel(x,gap,BLACK)
        sense.set_pixel(x,gap-1,BLACK)
        sense.set_pixel(x,gap+1,BLACK)
        sleep(0.5)
        for i in range(8):
            sense.set_pixel(x,i,BLACK)
        if collision(x,gap):
            game_over = True
        x -= 1

def draw_columns():
    while not game_over:
        column = Thread(target=draw_column)
        column.start()
        sleep(2)

def get_shake():
    global speed
    while not game_over:
        accel = sense.get_accelerometer_raw()
        x = round(accel['x'])
        y = round(accel['y'])
        z = round(accel['z'])
        sleep(0.01)
        if x != 0 or y != 0 or z != 1:
            speed = -1
        else:
            speed = +1

def collision(x,gap):
    if x == 3:
        if y < gap -1 or y > gap +1:
            return True
    return False

columns = Thread(target=draw_columns)
columns.start()

shake = Thread(target=get_shake)
shake.start()

while not game_over:
    sense.set_pixel(3,y,BLUE)
    sleep(0.1)
    sense.set_pixel(3,y,BLACK)
    y += speed
    if y > 7:
        y = 7
    if y < 0:
        y = 0    

shake.join()
columns.join()

sense.show_message("You Lose", text_colour=(255,0,0))
This code is from the raspberry pi resources and is called flappy astronaut(flappy bird clone).

Re: flappy astronaut

Posted: Wed Feb 24, 2016 7:39 pm
by davef21370

Code: Select all

from sense_hat import SenseHat
from time import sleep
from random import randint
from threading import Thread

sense = SenseHat()
sense.clear()

##Globals
game_over = False
RED = (255,0,0)
BLACK = (0,0,0)
BLUE = (0,0,255)
y = 4
speed = +1

def draw_column():
    global game_over
    x = 7
    gap = randint(2,6)
    while x >= 0 and not game_over:
        for led in range(8):
            sense.set_pixel(x,led,RED)
        sense.set_pixel(x,gap,BLACK)
        sense.set_pixel(x,gap-1,BLACK)
        sense.set_pixel(x,gap+1,BLACK)
        sleep(0.5)
        for i in range(8):
            sense.set_pixel(x,i,BLACK)
        if collision(x,gap):
            game_over = True
        x -= 1

def draw_columns():
    while not game_over:
        column = Thread(target=draw_column)
        column.start()
        sleep(2)

def get_shake():
    global speed
    while not game_over:
        accel = sense.get_accelerometer_raw()
        x = round(accel['x'])
        y = round(accel['y'])
        z = round(accel['z'])
        sleep(0.01)
        if x != 0 or y != 0 or z != 1:
            speed = -1
        else:
            speed = +1

def collision(x,gap):
    if x == 3:
        if y < gap -1 or y > gap +1:
            return True
    return False

while True:
    columns = Thread(target=draw_columns)
    columns.start()

    shake = Thread(target=get_shake)
    shake.start()

    while not game_over:
        sense.set_pixel(3,y,BLUE)
        sleep(0.1)
        sense.set_pixel(3,y,BLACK)
        y += speed
        if y > 7:
            y = 7
        if y < 0:
            y = 0    

    shake.join()
    columns.join()

    sense.show_message("You Lose", text_colour=(255,0,0))
    # Test for a restart or quit here
Something like that but I'm not in a position to test it.

Dave.