Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- CSC 119 Intro to Programming Final Project
- Author: Marco Madera
- Created on: 4/21/2019 5:12PM
- '''
- # imports
- import turtle
- import time
- import random
- # screen setup
- scrn = turtle.Screen()
- scrn.title("Versus! by Marco Madera")
- scrn.bgcolor("gray") # screen's background color
- scrn.setup(width=800, height=500) # screen's dimensions
- scrn.tracer(0) # disables screen's updates, allows for faster output
- # players
- class OnePlayer(turtle.Turtle):
- def __init__(self, color):
- super().__init__(shape="triangle")
- self.speed(0) #fastest animation speed
- self.color(color)
- self.penup()
- self.goto(200,0)
- self.direction = "stop"
- self._delay(0)
- def move(self):
- # move function allows for object to move accordingly
- if self.direction == "up":
- self.setheading(90)
- y = self.ycor()
- self.sety(y + 15)
- elif self.direction == "down":
- self.setheading(270)
- y = self.ycor()
- self.sety(y - 15)
- elif self.direction == "right":
- self.setheading(0)
- x = self.xcor()
- self.setx(x + 15)
- elif self.direction == "left":
- self.setheading(180)
- x = self.xcor()
- self.setx(x - 15)
- # functions for the players' movement
- def OneUp():
- player1.direction = "up"
- def OneDown():
- player1.direction = "down"
- def OneRight():
- player1.direction = "right"
- def OneLeft():
- player1.direction = "left"
- scrn.listen() # allows screen to listen for keyboard keys
- # key pairings for player 1
- scrn.onkeypress(OneUp, "i")
- scrn.onkeypress(OneDown, "k")
- scrn.onkeypress(OneRight, "l")
- scrn.onkeypress(OneLeft, "j")
- # screen border collision will cause the game to stop and that player to be sent to the middle
- def Game_Over(self):
- if self.xcor() < -390 or self.xcor() > 390 \
- or self.ycor() < -240 or self.ycor() > 240:
- time.sleep(2)
- self.goto(200, 0)
- self.direction = "stop"
- class TwoPlayer(OnePlayer):
- def __init__(self, color):
- super().__init__(color=color)
- self.goto(-200, 0)
- # functions for the players' movements
- def TwoUp():
- player2.direction = "up"
- def TwoDown():
- player2.direction = "down"
- def TwoRight():
- player2.direction = "right"
- def TwoLeft():
- player2.direction = "left"
- # pairs a keyboard key to a certain action using movement functions
- scrn.listen() # allows screen to listen for keyboard keys
- #key pairings for player 2
- scrn.onkeypress(TwoUp, "w")
- scrn.onkeypress(TwoDown, "s")
- scrn.onkeypress(TwoRight, "d")
- scrn.onkeypress(TwoLeft, "a")
- def Game_Over(self):
- if self.xcor() < -390 or self.xcor() > 390 \
- or self.ycor() < -240 or self.ycor() > 240:
- time.sleep(2)
- self.goto(-200, 0)
- self.direction = "stop"
- # reward and penalty
- class Reward(turtle.Turtle):
- def __init__(self):
- super().__init__()
- self.penup()
- self.shape("circle")
- self.color("green")
- self.goto(100, 200)
- class Penalty(Reward):
- def __init__(self):
- super().__init__()
- self.color("red")
- self.goto(-200, -100)
- # instantiating players
- player1 = OnePlayer("black")
- player2 = TwoPlayer("white")
- # instantiating food (power up and penalty)
- reward = Reward()
- penalty = Penalty()
- # turtle objects' size is 20px, so if distance to pwr/penalty
- # is below that, the pwr/penalty will move (touched)
- def oneScoring(p1_score_obj, score):
- p1_score_obj.clear()
- p1_score_obj.speed(0)
- p1_score_obj.shape("circle")
- p1_score_obj.color("black")
- p1_score_obj.penup()
- p1_score_obj.hideturtle()
- p1_score_obj.goto(300, 200)
- p1_score_obj.write("Player 1: 0", align = "center", font = ("Arial", 24, "normal"))
- if player1.distance(reward) < 20:
- reward.goto(random.randint(-390, 390), random.randint(-240, 240))
- score += 1
- p1_score_obj.write("Player 1: {}".format(score), \
- align = "center", font = ("Arial", 24, "normal"))
- elif player1.distance(penalty) < 20:
- penalty.goto(random.randint(-390, 390), random.randint(-200, 240))
- score -= 1
- p1_score_obj.write("Player 1: {}".format(score), \
- align = "center", font = ("Arial", 24, "normal"))
- def twoScoring(p2_score_obj, score):
- p2_score_obj.clear()
- #p2_score_obj.speed(0)
- #p2_score_obj.shape("circle")
- p2_score_obj.color("white")
- p2_score_obj.penup()
- p2_score_obj.hideturtle()
- p2_score_obj.goto(-300, 200)
- p2_score_obj.write("Player 2: {}".format(score), align = "center", font = ("Arial", 24, "normal"))
- if player2.distance(reward) < 20:
- reward.goto(random.randint(-390, 390), random.randint(-240, 240))
- score += 1
- p2_score_obj.write("Player 2: {}".format(score), \
- align = "center", font = ("Arial", 24, "normal"))
- if player2.distance(penalty) < 20:
- penalty.goto(random.randint(-390, 390), random.randint(-200, 240))
- score -= 1
- p2_score_obj.write("Player 2: {}".format(score), \
- align = "center", font = ("Arial", 24, "normal"))
- def main():
- # constants
- delay = 0.05
- # initial scores
- p1_score = 0
- p2_score = 0
- while True:
- player1.move()
- player2.move()
- #move(player1)
- #move(player2)
- p1_score_turtle = turtle.Turtle()
- p2_score_turtle = turtle.Turtle()
- oneScoring(p1_score_turtle, p1_score)
- twoScoring(p2_score_turtle, p2_score)
- player1.Game_Over()
- player2.Game_Over()
- #Game_Over(player1)
- #Game_Over(player2)
- time.sleep(.01)
- scrn.update()
- scrn.mainloop()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement