Even Odd game - Code V3
From RoboWiki
Return back to project page: Even Odd game - Fedor Agarshev
Python code for the Even Odd game project:
from hub import port, light_matrix, speaker
import motor, force_sensor, color_sensor
import color
pointMotor1 = port.B
pointMotor2 = port.D
motorForBet = port.A
buttonForceSensor = port.E
colorSensor = port.F
motor.run_to_relative_position(pointMotor1,0,1000)
motor.run_to_relative_position(pointMotor2,0,1000)
class player:
def __init__(self, name, motor, invert_move = 1):
self.name = name
self.scorePlayer = 10
self.motor = motor
self.invert_move = invert_move
def update_score(self, new_score):
motor.run_for_degrees(self.motor,(new_score - self.scorePlayer) * 30 * self.invert_move, 500)
self.scorePlayer = new_score
Player1 = player("Player1", pointMotor1) #You can change the name if you want.
Player2 = player("Player2", pointMotor2, -1) #You can change the name if you want.
def update_score(new_score1, new_score2, whos_betting, who_chooses):
whos_betting.update_score(new_score1)
who_chooses.update_score(new_score2)
def choice_of_bet():
global Player1, Player2
bet = 0
motor.reset_relative_position(motorForBet, 0)
light_matrix.write(str(bet))
while not force_sensor.is_pressed(buttonForceSensor):
if 20 < motor.relative_position(motorForBet) :
if bet < Player1.scorePlayer and bet < Player2.scorePlayer:
bet += 1
motor.reset_relative_position(motorForBet, 0)
light_matrix.write(str(bet))
if -20 > motor.relative_position(motorForBet) :
if bet != 0:
bet -= 1
motor.reset_relative_position(motorForBet, 0)
light_matrix.write(str(bet))
return bet
def choice_even_or_odd(bet, whos_betting, who_chooses):
while color_sensor.color(colorSensor) != color.RED and color_sensor.color(colorSensor) != color.GREEN:
pass
color1 = color_sensor.color(colorSensor)
if (color1 == color.RED and bet % 2 == 0) or (color1 == color.GREEN and bet % 2 != 0):
speaker.beep(600, 500, 50)
speaker.beep(640, 500, 50)
speaker.beep(600, 500, 50)
new_score1 = whos_betting.scorePlayer - bet
new_score2 = who_chooses.scorePlayer + bet
else :
speaker.beep(800, 500, 50)
speaker.beep(840, 500, 50)
speaker.beep(800, 500, 50)
new_score1 = whos_betting.scorePlayer + bet
new_score2 = who_chooses.scorePlayer - bet
return new_score1, new_score2
def game():
global Player1, Player2
whos_betting = Player1
who_chooses = Player2
while whos_betting.scorePlayer != 0 and who_chooses.scorePlayer != 0:
light_matrix.write(whos_betting.name + " makes a bet")
bet = choice_of_bet()
speaker.beep(700, 500, 50)
new_score1, new_score2 = choice_even_or_odd(bet, whos_betting, who_chooses)
update_score(new_score1, new_score2, whos_betting, who_chooses)
whos_betting, who_chooses = who_chooses, whos_betting
if Player1.scorePlayer > Player2.scorePlayer:
light_matrix.write(Player1.name + " win!")
else :
light_matrix.write(Player2.name + " win!")
game()