接彈珠游戲,彈珠碰到上方及左右兩側的牆壁進行反彈,反彈,可以理解成彈珠的坐標值變成相反數。當彈珠的圓心坐標值到達上方牆壁時,只需要讓坐標變成負數,彈珠就可以向相反的方向移動了。
import pygame as pg import sys from random import randint import time pg.init() game_window = pg.display.set_mode((600, 500)) pg.display.set_caption("接彈珠游戲") score = 0 font = pg.font.Font(None, 60) window_color = (0, 0, 0) # 設置窗口顏色——黑色 ball_color = (0, 255, 0) # 設置球的顏色-——綠色 rect_color = (255, 0, 0) # 設置擋板顏色——紅色 move_x = 1 move_y = 1 ball_x = randint(20, 580) #球的初始位置隨機 ball_y = randint(20, 480) points = 1 count = 0 while True: game_window.fill(window_color) for event in pg.event.get(): if event.type == pg.QUIT: sys.exit() mouse_x, mouse_y = pg.mouse.get_pos() pg.draw.circle(game_window, ball_color, (ball_x, ball_y), 20) #在窗口內畫球 pg.draw.rect(game_window, rect_color, (mouse_x, 490, 100, 10)) #在窗口內畫矩形接拍 ball_x += move_x ball_y += move_y my_score = font.render(str(score), False, (255, 255, 0)) #設置分數顯示,黃色 game_window.blit(my_score, (500, 30)) ball_x += move_x ball_y += move_y if ball_x <= 20 or ball_x >= 580: #左右兩側牆壁 move_x = -move_x #碰到左右兩側牆壁時,X坐標變為反方向 if ball_y <= 20: #碰到上方牆壁時,Y坐標改變方向 move_y = -move_y elif ball_x >(mouse_x - 20) and ball_x <(mouse_x + 120) and ball_y >= 470: move_y = -move_y #下方接到球,改變Y坐標方向,並加分 score += points count += 1 #接球次數加1 if count == 5: count = 0 points += points #分數翻倍 if move_x > 0: move_x += 1 else: move_x -= 1 move_y -= 1 elif ball_y > 480 and (ball_x <= mouse_x - 20 or ball_x >= mouse_x + 120): ball_y = 490 #沒有接到球,退出程序 break pg.display.update() #更新窗口,保證窗口始終打開 time.sleep(0.03) #球運動的速度0.03秒走一個像素
更多Python源代碼,請微信關注:Python代碼大全,