From b61b7fcb980e3c21e4774e9311ab5f5f26e7922a Mon Sep 17 00:00:00 2001 From: Frank Song <2003143@stu.hdschools.org> Date: Fri, 12 Jun 2026 06:07:46 +0000 Subject: [PATCH] Upload files to "/" --- main.py | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..642615a --- /dev/null +++ b/main.py @@ -0,0 +1,97 @@ +import pgzrun + +music.play('bgm') +# 窗口参数 +WIDTH = 1920 +HEIGHT = 1080 +TITLE = "Ping_Pang" + +# 左右球拍 +paddle1 = Actor("1") +paddle1.x = 80 +paddle1.y = HEIGHT / 2 +paddle_speed = 8 + +paddle2 = Actor("2") +paddle2.x = WIDTH - 80 +paddle2.y = HEIGHT / 2 + +# 乒乓球 +ball = Actor("ball") +ball.pos = (WIDTH//2, HEIGHT//2) +ball_speed_x = 7 +ball_speed_y = 7 + +# 游戏状态: playing / gameover +game_state = "playing" +lose_text = "" + +# 球拍上下限位 +half_h = paddle1.height / 2 +top = half_h +bottom = HEIGHT - half_h + +bg = Actor("bg") + +def draw(): + screen.clear() + bg.draw() + paddle1.draw() + paddle2.draw() + ball.draw() + + # 游戏结束提示 + if game_state == "gameover": + screen.draw.text(lose_text, center=(WIDTH//2, HEIGHT//2), fontsize=80, color="red") + screen.draw.text("click space to restar", center=(WIDTH//2, HEIGHT//2+80), fontsize=40, color="white") + +def update(): + global ball_speed_x, ball_speed_y, game_state, lose_text + if game_state != "playing": + return + + # 左拍 W S + if keyboard.w and paddle1.y>top: + paddle1.y -= paddle_speed + if keyboard.s and paddle1.ytop: + paddle2.y -= paddle_speed + if keyboard.down and paddle2.y= HEIGHT: + ball_speed_y *= -1 + sounds.bump.play() + + # 球拍碰撞反弹 + if ball.colliderect(paddle1) or ball.colliderect(paddle2): + ball_speed_x *= -1 + sounds.bump.play() + + # 出左右边界直接失败 + if ball.left <= 0: + game_state = "gameover" + lose_text = "player 1 win!" + sounds.zhanbai.play() + if ball.right >= WIDTH: + game_state = "gameover" + lose_text = "player 2 win!" + sounds.zhanbai.play() + +# 空格重新开局 +def on_key_down(key): + global game_state, ball_speed_x, ball_speed_y + if key == keys.SPACE and game_state == "gameover": + game_state = "playing" + ball.pos = (WIDTH//2, HEIGHT//2) + ball_speed_x = 7 + ball_speed_y = 7 + +pgzrun.go()