def run(self):
		global player
		global running
		global laser_list
		global green
		pfio.init()
		tick = 0
		while running:
			try:
				x = pfio.read_input()
				if x >= 8 :
					x=0
				if tick + 0.8 < time.time():
					#FIRE!!!!!!
					if x - 4 >= 0:
						x = x-4
						newlaser = laser_sprite(4,10,1, green)
						newlaser.rect.x = 28 + player.rect.x # laser is 4 wide player is 60; 60 /2 + 4 /2 = 28
						newlaser.rect.y =  player.rect.y
						laser_list.add(newlaser)		
					tick = time.time()
				# go right
				if x - 2 >= 0:
					x = x-2
					player.rect.x += 2
				#go left
				if x - 1 >= 0:
					player.rect.x -= 2
			except:
				pass
		pfio.deinit()
Beispiel #2
0
 def run(self):
     while self.mos.loop(0) == 0:
         inputpins = pfio.read_input() # get input pin state
         if self.inputpins != inputpins: # check to see if they are different
             change = self.inputpins ^ inputpins #get the differences
             for i in range(8): 
                 pinid = 1<<i
                 if change & pinid == pinid:
                     self.mos.publish( self.topicheader + '/input/pin' + str(i), str((inputpins&pinid)>>i), 0 )
             self.inputpins = inputpins
Beispiel #3
0
def ajax(request):
    data = request.GET.dict()
    return_values = dict()

    if 'init' in data:
        try:
            pfio.init()
        except pfio.InitError as error:
            return_values.update({'status': 'init failed'})
            return_values.update({'error': str(error)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

    if 'read_input' in data:
        try:
            input_bitp = pfio.read_input()
        except Exception as e:
            return_values.update({'status': 'read_input failed'})
            return_values.update({'error': str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))
        else:
            return_values.update({'input_bitp': input_bitp})

    if 'read_output' in data:
        try:
            output_bitp = pfio.read_output()
        except Exception as e:
            return_values.update({'status': 'read_output failed'})
            return_values.update({'error': str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))
        else:
            return_values.update({'output_bitp': output_bitp})

    if 'write_output' in data:
        try:
            output_bitp = int(data['write_output'])
        except ValueError:
            return_values.update({'status': 'write_output failed'})
            return_values.update(
                {'error': "write_output needs an integer bit pattern."})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

        try:
            pfio.write_output(output_bitp)
        except Exception as e:
            return_values.update({'status': "write_output failed"})
            return_values.update({'error': str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

    return_values.update({'status': 'success'})
    return HttpResponse(simplejson.dumps(return_values))
Beispiel #4
0
def ajax(request):
    data = request.GET.dict()
    return_values = dict()

    if 'init' in data:
        try:
            pfio.init()
        except pfio.InitError as error:
            return_values.update({'status' : 'init failed'})
            return_values.update({'error' : str(error)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

    if 'read_input' in data:
        try:
            input_bitp = pfio.read_input()
        except Exception as e:
            return_values.update({'status' : 'read_input failed'})
            return_values.update({'error' : str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))
        else:
            return_values.update({'input_bitp' : input_bitp})

    if 'read_output' in data:
        try:
            output_bitp = pfio.read_output()
        except Exception as e:
            return_values.update({'status' : 'read_output failed'})
            return_values.update({'error' : str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))
        else:
            return_values.update({'output_bitp' : output_bitp})

    if 'write_output' in data:
        try:
            output_bitp = int(data['write_output'])
        except ValueError:
            return_values.update({'status' : 'write_output failed'})
            return_values.update({'error' : "write_output needs an integer bit pattern."})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

        try:
            pfio.write_output(output_bitp)
        except Exception as e:
            return_values.update({'status' : "write_output failed"})
            return_values.update({'error' : str(e)})
            return HttpResponseBadRequest(simplejson.dumps(return_values))

    return_values.update({'status' : 'success'})
    return HttpResponse(simplejson.dumps(return_values))
Beispiel #5
0
 def __init__(self, ident, topicheader, uri = 'localhost', port = 1883):
     self.uri = uri
     self.port = port
     self.ident = ident
     
     self.topicheader = topicheader+ '/' + self.ident
     self.outputRegex = re.compile(self.topicheader + "/output/pin/(\d*)", re.IGNORECASE)
     
     
     self.mos = mosquitto.Mosquitto(self.ident)
     self.mos.on_message = self.on_message # register for callback
     self.connect()
     
     
     pfio.init()
     self.inputpins = pfio.read_input()
	def timeout_loop(self):
		# read PiFace input/output state
		global last_data
		r_input = '{0:08b}'.format(pfio.read_input())
		r_output = '{0:08b}'.format(pfio.read_output())

		data = {"in": [], "out": []}

		for i in range(8):
			data['in'].append(r_input[7-i])
			data['out'].append(r_output[7-i])

		if data != last_data:
			self.write_message(json.dumps(data))
		last_data = data

		# here come the magic part .. loop
		if self.connected:
			tornado.ioloop.IOLoop.instance().add_timeout(datetime.timedelta(seconds=.5), self.timeout_loop)
Beispiel #7
0
        sleep(0.5)  # wait to keep the colour showing
        pfio.digital_write(i + 2, 0)  # turn the colour off
        sleep(0.2)  # small break between colours

    sleep(0.4)
    pfio.write_output(
        0xFF)  # signify it is their turn by turning all the LEDs on then off
    sleep(0.3)
    pfio.write_output(0x0)

    if screen_output:
        print "\nYour turn!"

    for i in array:  # for each colour in current sequence (check against inputted sequence)
        event = pfio.read_input()  # read the button port state

        while event != 0:  # wait till no buttons pressed
            event = pfio.read_input(
            )  # so a single button press is not read as 2
            sleep(0.001)  # delay

        while event == 0:  # wait for any input
            event = pfio.read_input()

        sleep(0.001)  # delay
        pin_number = pfio.get_pin_number(event)  # calculate the input pin

        if screen_output:
            print colours[pin_number -
                          1]  # print the colour in sequence to the screen
Beispiel #8
0
set_time = 2000					# time allowed to hit each light (starts off large and reduced after each hit)
time_left = set_time				# countdown timer for hitting the light
hit = 0						# the input value
score = 0					# keep track of the player's score
misses = 0					# keep track of how many the player misses

colours = ["Red","Green","Blue","Yellow","White"]	# colour list for printing to screen
previous_pressed = 255


print "Time left is: %s" %time_left		# notify the player how long they have to hit each flash


while True:

	in_bit_pattern = pfio.read_input() # see if any buttons have been hit
	
	if in_bit_pattern != previous_pressed:		# check this is a new button press
		previous_pressed = in_bit_pattern	# record button press for next time's check

		if in_bit_pattern > 0:

			if in_bit_pattern == pfio.get_pin_bit_mask(current):	# check that only the correct button was hit
			
				pfio.digital_write(current+2, 0)		# turn off hit light
				previous = current
				current = next_colour()				# get next colour
			
				while current == previous:			# ensure differnt colour each time
					current = next_colour()			# get next colour
				
Beispiel #9
0
    def ask_questions(self):
        for question in self.questions:
            # ask a question
            correct_answer_index = int(2 * random.random())
            wrong_answer_index = correct_answer_index ^ 1
            answers = ["", ""]
            answers[correct_answer_index] = question.correct_answer
            answers[wrong_answer_index] = question.wrong_answer

            values = [question.text]
            values.extend(answers)
            self.gui.update_question("%s\nA: %s\nB: %s" % tuple(values))

            # wait for a button press
            pin_bit_pattern = pfio.read_input()
            while pin_bit_pattern == 0 and not self.stopped():
                pin_bit_pattern = pfio.read_input()

            # since we can't have multi-leveled break statements...
            if self.stopped():
                break

            # find out which button was pressed
            pin_number = pfio.get_pin_number(pin_bit_pattern)

            #print "pin number: %d" % pin_number
            #print self.player1.buttons[correct_answer_index].switch.pin_number

            if pin_number == self.player1.buttons[correct_answer_index].switch.pin_number:
                self.player1.buttons[correct_answer_index].light.turn_on()
                print "Player 1 got the correct answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question("%s\n\nThe correct answer was: %s\n\nPlayer 1 has 3 seconds to race!" % (question.text, question.correct_answer))
                self.player1.car.drive(3)
                self.player1.buttons[correct_answer_index].light.turn_off()

            elif pin_number == self.player1.buttons[wrong_answer_index].switch.pin_number:
                self.player1.buttons[wrong_answer_index].light.turn_on()
                print "Player 1 got the WRONG answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question("%s\n\nThe correct answer was: %s\n\nPlayer 2 has 3 seconds to race!" % (question.text, question.correct_answer))
                self.player2.car.drive(3)
                self.player1.buttons[wrong_answer_index].light.turn_off()

            elif pin_number == self.player2.buttons[correct_answer_index].switch.pin_number:
                self.player2.buttons[correct_answer_index].light.turn_on()
                print "Player 2 got the correct answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question("%s\n\nThe correct answer was: %s\n\nPlayer 2 has 3 seconds to race!" % (question.text, question.correct_answer))
                self.player2.car.drive(3)
                self.player2.buttons[correct_answer_index].light.turn_off()

            elif pin_number == self.player2.buttons[wrong_answer_index].switch.pin_number:
                self.player2.buttons[wrong_answer_index].light.turn_on()
                print "Player 2 got the WRONG answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question("%s\n\nThe correct answer was: %s\n\nPlayer 1 has 3 seconds to race!" % (question.text, question.correct_answer))
                self.player1.car.drive(3)
                self.player2.buttons[wrong_answer_index].light.turn_off()

            elif pin_number == self.buttons[4].switch.pin_number:
                self.buttons[4].light.turn_on()
                print "PASS"
                #print "The answer was: {}".format(question.correct_answer)
                time.sleep(1)
                self.buttons[4].light.turn_off()

            else:
                raise UnknownButtonError("detected change on pin: %d" % pin_number)

            # wait until nothing is pressed
            pin_bit_pattern = pfio.read_input()
            while pin_bit_pattern != 0:
                pin_bit_pattern = pfio.read_input()

            # should we keep playing?
            if self.stopped():
                break
def arcade_buttons():
	while(True):
		pfio.write_output(pfio.read_input())
Beispiel #11
0
    def ask_questions(self):
        for question in self.questions:
            # ask a question
            correct_answer_index = int(2 * random.random())
            wrong_answer_index = correct_answer_index ^ 1
            answers = ["", ""]
            answers[correct_answer_index] = question.correct_answer
            answers[wrong_answer_index] = question.wrong_answer

            values = [question.text]
            values.extend(answers)
            self.gui.update_question("%s\nA: %s\nB: %s" % tuple(values))

            # wait for a button press
            pin_bit_pattern = pfio.read_input()
            while pin_bit_pattern == 0 and not self.stopped():
                pin_bit_pattern = pfio.read_input()

            # since we can't have multi-leveled break statements...
            if self.stopped():
                break

            # find out which button was pressed
            pin_number = pfio.get_pin_number(pin_bit_pattern)

            #print "pin number: %d" % pin_number
            #print self.player1.buttons[correct_answer_index].switch.pin_number

            if pin_number == self.player1.buttons[
                    correct_answer_index].switch.pin_number:
                self.player1.buttons[correct_answer_index].light.turn_on()
                print "Player 1 got the correct answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question(
                    "%s\n\nThe correct answer was: %s\n\nPlayer 1 has 3 seconds to race!"
                    % (question.text, question.correct_answer))
                self.player1.car.drive(3)
                self.player1.buttons[correct_answer_index].light.turn_off()

            elif pin_number == self.player1.buttons[
                    wrong_answer_index].switch.pin_number:
                self.player1.buttons[wrong_answer_index].light.turn_on()
                print "Player 1 got the WRONG answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question(
                    "%s\n\nThe correct answer was: %s\n\nPlayer 2 has 3 seconds to race!"
                    % (question.text, question.correct_answer))
                self.player2.car.drive(3)
                self.player1.buttons[wrong_answer_index].light.turn_off()

            elif pin_number == self.player2.buttons[
                    correct_answer_index].switch.pin_number:
                self.player2.buttons[correct_answer_index].light.turn_on()
                print "Player 2 got the correct answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question(
                    "%s\n\nThe correct answer was: %s\n\nPlayer 2 has 3 seconds to race!"
                    % (question.text, question.correct_answer))
                self.player2.car.drive(3)
                self.player2.buttons[correct_answer_index].light.turn_off()

            elif pin_number == self.player2.buttons[
                    wrong_answer_index].switch.pin_number:
                self.player2.buttons[wrong_answer_index].light.turn_on()
                print "Player 2 got the WRONG answer!"
                #print "The answer was: {}".format(question.correct_answer)
                self.gui.update_question(
                    "%s\n\nThe correct answer was: %s\n\nPlayer 1 has 3 seconds to race!"
                    % (question.text, question.correct_answer))
                self.player1.car.drive(3)
                self.player2.buttons[wrong_answer_index].light.turn_off()

            elif pin_number == self.buttons[4].switch.pin_number:
                self.buttons[4].light.turn_on()
                print "PASS"
                #print "The answer was: {}".format(question.correct_answer)
                time.sleep(1)
                self.buttons[4].light.turn_off()

            else:
                raise UnknownButtonError("detected change on pin: %d" %
                                         pin_number)

            # wait until nothing is pressed
            pin_bit_pattern = pfio.read_input()
            while pin_bit_pattern != 0:
                pin_bit_pattern = pfio.read_input()

            # should we keep playing?
            if self.stopped():
                break
Beispiel #12
0
def runGame(isFirstGame):
    if isFirstGame:
        # Let the computer go first on the first game, so the player
        # can see how the tokens are dragged from the token piles.
        turn = COMPUTER
        showHelp = True
    else:
        # Randomly choose who goes first.
        if random.randint(0, 1) == 0:
            turn = COMPUTER
        else:
            turn = HUMAN
        showHelp = False

    # Set up a blank board data structure.
    mainBoard = getNewBoard()

    while True: # main game loop
        if turn == HUMAN:
            
            # Human player's turn.
            #getHumanMove(mainBoard, showHelp)
            column = 0
            
            column = pfio.read_input()
            while column == 0:
                column = pfio.read_input()
                column_position = 0
                serialport.write("Human player's turn")
            if column == 1:
                column_position = 0
            elif column == 2:
                column_position = 1
            elif column == 4:
                column_position = 2
            elif column == 8:
                column_position = 3
            elif column == 16:
                column_position = 4
            elif column == 32:
                column_position = 5
            elif column == 64:
                column_position = 6
                
                
            #board[column][getLowestEmptySpace(mainBoard, column)] = RED
            #animateDroppingToken(board, column, RED)
            animatePlayerMoving(mainBoard,column_position)
            makeMove(mainBoard, RED, column_position)
            if showHelp:
                # turn off help arrow after the first move
                showHelp = False
            moves_sound.play()
            if isWinner(mainBoard, RED):
                winnerImg = HUMANWINNERIMG
                break
            
            
            
            turn = COMPUTER # switch to other player's turn
        else:
            # Computer player's turn.
            column = getComputerMove(mainBoard)
            animateComputerMoving(mainBoard, column)
            makeMove(mainBoard, BLACK, column)
            if isWinner(mainBoard, BLACK):
                winnerImg = COMPUTERWINNERIMG
                break
            moves_sound.play()
            turn = HUMAN # switch to other player's turn

        if isBoardFull(mainBoard):
            # A completely filled board means it's a tie.
            winnerImg = TIEWINNERIMG
            break
    
    while True:
        # Keep looping until player clicks the mouse or quits.
        drawBoard(mainBoard)
        DISPLAYSURF.blit(winnerImg, WINNERRECT)
        pygame.display.update()
        FPSCLOCK.tick()

        column = 0
        while column == 0:
            column = pfio.read_input()
            if winnerImg == HUMANWINNERIMG:
                serialport.write("The winner is the Human Player")
            elif winnerImg == COMPUTERWINNERIMG:
                serialport.write("The winner is the Computer")
        if column == 1:
            menu_sound.play(-1)
            DISPLAYSURF.fill(BGCOLOR)
            state = 0
            return
        elif column == 2:
            pygame.quit()
            sys.exit()
#
# Python script to wait until certain button is pressed
# returns button pressed and turns on a light to indicate it (for testing) 
# @Pierre
# 
import piface.pfio as pfio

pfio.init()

button = pfio.read_input()
while button == 0:
    button = pfio.read_input()
pin_number = pfio.get_pin_number(button)
pfio.digital_write(0,1)
print pin_number
def AnyButtonPressed():
    button = pfio.read_input()
    while button == 0:
        button = pfio.read_input()
    pin_number = pfio.get_pin_number(button)
    return pin_number
Beispiel #15
0
set_time = 2000  # time allowed to hit each light (starts off large and reduced after each hit)
time_left = set_time  # countdown timer for hitting the light
hit = 0  # the input value
score = 0  # keep track of the player's score
misses = 0  # keep track of how many the player misses

colours = ["Red", "Green", "Blue", "Yellow", "White"]  # colour list for printing to screen
previous_pressed = 255


print "Time left is: %s" % time_left  # notify the player how long they have to hit each flash


while True:

    in_bit_pattern = pfio.read_input()  # see if any buttons have been hit

    if in_bit_pattern != previous_pressed:  # check this is a new button press
        previous_pressed = in_bit_pattern  # record button press for next time's check

        if in_bit_pattern > 0:

            if in_bit_pattern == pfio.get_pin_bit_mask(current):  # check that only the correct button was hit

                pfio.digital_write(current + 2, 0)  # turn off hit light
                previous = current
                current = next_colour()  # get next colour

                while current == previous:  # ensure differnt colour each time
                    current = next_colour()  # get next colour
def send_message():
	



def listener(player_number):
	global addr

	if player_number:
		global data1
		while True:
			data1, addr = players[0].recvfrom(1024) 
			print "Lines received from player 1 %s" %data			
				
	else:
		while True:
		global data2
			data2, addr = players[1].recvfrom(1024)
			print "Lines received from player 2 %s" %data	







players = list()

if len(sys.argv) != 1:
	YOUR_IP =socket.gethostbyname(socket.gethostname())
	YOUR_PORT = 5005
	

	if sys.argv[1] == "1":
		PLAYER1_IP="192.168.1.2"  # default IP address for quick play
	else:
		PLAYER1_IP = sys.argv[1]
	PLAYER1_PORT = 4052
	sock1 = socket.socket(socket.AF_INET,
				socket.SOCK_DGRAM)
	sock1.bind((PLAYER1_IP,PLAYER1_PORT))
	players.append(sock1)


	if len(sys.argv) == 3:


		if sys.argv[2] == "1":
			PLAYER2_IP="192.168.0.1" # default IP address for quick play
		else:
			PLAYER2_IP = sys.argv[2]

		PLAYER2_PORT = 4053
		sock2 = socket.socket(socket.AF_INET,
				socket.SOCK_DGRAM)
		sock2.bind((PLAYER2_IP,PLAYER2_PORT))
		players.append(sock2)
		
	if len(players):
		listener_thread_1 = threading.Thread(target=listener, args=(True,))
		listener_thread_1.daemon = True
		listener_thread_1.start()
	if len(players) >1:
		listener_thread_2 = threading.Thread(target=listener, args=(False,))
		listener_thread_2.daemon = True
		listener_thread_2.start()


	while in_play:

		while yourTurn:
			new = pfio.read_input()
			if previous != new:
				previous = new
				send_message(new)
				break

		while not yourTurn:
			if received:
				for player in players:
def piface_listener():
	global pressed_button
	while(True):
		pressed_button = pfio.read_input()
Beispiel #18
0
		sleep(0.5)				# wait to keep the colour showing 
		pfio.digital_write(i+2,0)		# turn the colour off
		sleep(0.2)				# small break between colours
		

	sleep(0.4)
	pfio.write_output(0xFF)				# signify it is their turn by turning all the LEDs on then off
	sleep(0.3)
	pfio.write_output(0x0)
	
	if screen_output:	
		print "\nYour turn!"


	for i in array:						# for each colour in current sequence (check against inputted sequence)
		event = pfio.read_input()		# read the button port state
		
		while event != 0:					# wait till no buttons pressed
			event = pfio.read_input()	# so a single button press is not read as 2
			sleep(0.001)					# delay
				
		while event == 0:					# wait for any input 
			event = pfio.read_input()
		
		sleep(0.001)						# delay
		pin_number = pfio.get_pin_number(event)			# calculate the input pin
		
		if screen_output:
			print colours[pin_number -1]			# print the colour in sequence to the screen
		
		pfio.digital_write(pin_number+2,1)			# light up the buttons pressed
Beispiel #19
0
        
        menu.set_center(True,True)
        menu.set_alignment('center','center')
        
        if prev_state != state:
            pygame.event.post(pygame.event.Event(EVENT_CHANGE_STATE, key = 0))
            prev_state = state
 
        e = pygame.event.wait()

        if e.type == pygame.KEYDOWN or e.type == EVENT_CHANGE_STATE:
            if state == 0:
                rect_list,state = menu.update(e,state)
                column = 0
                while column == 0:
                    column = pfio.read_input()
                    serialport.write("Welcome to Connect Four Game")
                    pygame.display.update()
                if column == 1:
                    state = 1
                elif column == 2:
                    state = 2                
                
            if state == 1:
                menu_sound.stop()
                runGame(isFirstGame)
                isFirstGame = False
                state = 0
                prev_state = 1
            elif state == 2 :
                print 'Exit'