Difference between revisions of "Even Odd game - Code"
From RoboWiki
					
										
					
					| Line 38: | Line 38: | ||
| def choice_of_bet(): | def choice_of_bet(): | ||
|      global Player1, Player2 |      global Player1, Player2 | ||
| − |      bet =  | + |      bet = 0 | 
|      motorPosition = motorForBet.get_position() |      motorPosition = motorForBet.get_position() | ||
|      hub.light_matrix.write(bet) |      hub.light_matrix.write(bet) | ||
| Line 48: | Line 48: | ||
|                  hub.light_matrix.write(bet) |                  hub.light_matrix.write(bet) | ||
|              if motorPosition - 20 > motorForBet.get_position() : |              if motorPosition - 20 > motorForBet.get_position() : | ||
| − |                  if bet !=  | + |                  if bet != 0: | 
|                      bet -= 1 |                      bet -= 1 | ||
|                  motorPosition = motorForBet.get_position() |                  motorPosition = motorForBet.get_position() | ||
Revision as of 08:01, 13 May 2023
Return back to project page: Even Odd game - Fedor Agarshev
Python code for the Spike Pong project:
 
from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair
from spike.control import wait_for_seconds, wait_until, Timer
from math import *
hub = PrimeHub()
pointMotor1 = Motor("B")
pointMotor2 = Motor("D")
motorForBet = Motor("A")
buttonForceSensor = ForceSensor("E")
colorSensor = ColorSensor("F")
pointMotor1.run_to_position(0)
pointMotor2.run_to_position(0)
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):
        self.motor.run_for_degrees((new_score - self.scorePlayer) * 30 * self.invert_move)
        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
    motorPosition = motorForBet.get_position()
    hub.light_matrix.write(bet)
    while not buttonForceSensor.is_pressed():
            if motorPosition + 20 < motorForBet.get_position() :
                if  bet < Player1.scorePlayer and  bet < Player2.scorePlayer:
                    bet += 1
                motorPosition = motorForBet.get_position()
                hub.light_matrix.write(bet)
            if motorPosition - 20 > motorForBet.get_position() :
                if bet != 0:
                    bet -= 1
                motorPosition = motorForBet.get_position()
                hub.light_matrix.write(bet)
            
    return bet
def choice_even_or_odd(bet, whos_betting, who_chooses):
    while colorSensor.get_color() != "red" and colorSensor.get_color() != "green":
        pass
    color = colorSensor.get_color()
    if (color == "red" and bet % 2 == 0) or (color == "green" and bet % 2 != 0):
        hub.speaker.beep(60, 0.5)
        hub.speaker.beep(64, 0.5)
        hub.speaker.beep(60, 0.5)
        new_score1 = whos_betting.scorePlayer - bet
        new_score2 = who_chooses.scorePlayer + bet
    else :
        hub.speaker.beep(80, 0.5)
        hub.speaker.beep(84, 0.5)
        hub.speaker.beep(80, 0.5)
        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:
        hub.light_matrix.write(whos_betting.name + " makes a bet")
        bet = choice_of_bet()
        hub.speaker.beep(70, 0.5)
        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:
        hub.light_matrix.write(Player1.name + " win!")
    else :
        hub.light_matrix.write(Player2.name + " win!")
hub.speaker.set_volume(50)       
game()
