day 21 - pong WIP
This commit is contained in:
27
021/ball.py
Normal file
27
021/ball.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
from turtle import Turtle
|
||||||
|
import random
|
||||||
|
|
||||||
|
class Ball(Turtle):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.shape("circle")
|
||||||
|
self.color("white")
|
||||||
|
self.pu()
|
||||||
|
|
||||||
|
self.angle = random.randint(0,45)
|
||||||
|
self.angle = 50
|
||||||
|
self.setheading(self.angle)
|
||||||
|
|
||||||
|
print(self.angle)
|
||||||
|
|
||||||
|
def move(self):
|
||||||
|
self.forward(20)
|
||||||
|
|
||||||
|
def bounce_wall(self):
|
||||||
|
self.angle = -self.angle
|
||||||
|
self.setheading(self.angle)
|
||||||
|
|
||||||
|
def bounce_paddle(self):
|
||||||
|
self.angle = -self.angle
|
||||||
|
self.setheading(self.angle)
|
||||||
|
|
||||||
62
021/game.py
Normal file
62
021/game.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
from turtle import Turtle, Screen
|
||||||
|
from paddle import Paddle
|
||||||
|
from ball import Ball
|
||||||
|
|
||||||
|
class GameManager():
|
||||||
|
BOARD_WIDTH=800
|
||||||
|
BOARD_HEIGHT=600
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.screen = Screen()
|
||||||
|
|
||||||
|
self.screen.setup(width=self.BOARD_WIDTH, height=self.BOARD_HEIGHT)
|
||||||
|
self.screen.bgcolor("black")
|
||||||
|
self.screen.title("PONG")
|
||||||
|
self.screen.tracer(0)
|
||||||
|
self.draw_delimiter()
|
||||||
|
self.screen.update()
|
||||||
|
|
||||||
|
self.game_on = True
|
||||||
|
|
||||||
|
self.right_paddle = Paddle(350)
|
||||||
|
self.left_paddle = Paddle(-370)
|
||||||
|
|
||||||
|
self.ball = Ball()
|
||||||
|
|
||||||
|
def draw_delimiter(self):
|
||||||
|
delimiter = Turtle()
|
||||||
|
max_y = int(self.BOARD_HEIGHT/2)
|
||||||
|
|
||||||
|
delimiter.color("white")
|
||||||
|
delimiter.shape("square")
|
||||||
|
delimiter.pen(pensize=3)
|
||||||
|
delimiter.hideturtle()
|
||||||
|
delimiter.pu()
|
||||||
|
delimiter.goto(x=0, y=-max_y)
|
||||||
|
|
||||||
|
for i in range(-max_y, max_y, 20):
|
||||||
|
delimiter.goto(x=0, y=i+10)
|
||||||
|
delimiter.pu()
|
||||||
|
delimiter.goto(x=0, y=i+20)
|
||||||
|
delimiter.pd()
|
||||||
|
|
||||||
|
def game_round(self):
|
||||||
|
self.control_paddle()
|
||||||
|
self.ball.move()
|
||||||
|
|
||||||
|
if abs(self.ball.xcor()) >= 400:
|
||||||
|
self.game_on = False
|
||||||
|
|
||||||
|
if abs(self.ball.ycor()) > 280:
|
||||||
|
self.ball.bounce_wall()
|
||||||
|
|
||||||
|
print(self.ball.ycor())
|
||||||
|
|
||||||
|
def control_paddle(self):
|
||||||
|
self.screen.listen()
|
||||||
|
self.screen.onkey(self.right_paddle.up, "Up")
|
||||||
|
self.screen.onkey(self.right_paddle.down, "Down")
|
||||||
|
self.screen.onkey(self.left_paddle.up, "q")
|
||||||
|
self.screen.onkey(self.left_paddle.down, "w")
|
||||||
|
self.screen.update()
|
||||||
|
|
||||||
9
021/main.py
Normal file
9
021/main.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from game import GameManager
|
||||||
|
from paddle import Paddle
|
||||||
|
import time
|
||||||
|
|
||||||
|
game = GameManager()
|
||||||
|
while game.game_on:
|
||||||
|
game.game_round()
|
||||||
|
time.sleep(0.1)
|
||||||
|
game.screen.exitonclick()
|
||||||
17
021/paddle.py
Normal file
17
021/paddle.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from turtle import Turtle
|
||||||
|
|
||||||
|
class Paddle(Turtle):
|
||||||
|
def __init__(self, x_pos):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.shape("square")
|
||||||
|
self.shapesize(stretch_wid=5, stretch_len=1)
|
||||||
|
self.color("white")
|
||||||
|
self.pu()
|
||||||
|
self.teleport(x=x_pos, y=0)
|
||||||
|
|
||||||
|
def up(self):
|
||||||
|
self.goto(x=self.xcor(), y=self.ycor()+20)
|
||||||
|
|
||||||
|
def down(self):
|
||||||
|
self.goto(x=self.xcor(), y=self.ycor()-20)
|
||||||
Reference in New Issue
Block a user