亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

python pygame實現擋板彈球游戲

2024-09-09 19:02:57
字體:
來源:轉載
供稿:網友

學了一天pygame,用python和pygame寫一個簡單的擋板彈球游戲

GitHub:

EasyBaffleBallGame

# -*- coding:utf-8 -*-from sys import exitimport pygamefrom pygame.locals import *pygame.init()# 創建窗口ScreenWidth = 500ScreenHright = 720ScreenSize = (ScreenWidth, ScreenHright)Screen = pygame.display.set_mode(ScreenSize, 0, 32)pygame.display.set_caption("Ly's Easy Ball Game")# 背景音樂pygame.mixer.music.load('Sugar.mp3')pygame.mixer.music.play(-1, 0.0)# 碰撞音效CollisionMusic = pygame.mixer.Sound('collision.wav')# 重新開始按鈕音效ButtonMusic = pygame.mixer.Sound('button.wav')# 游戲結束音效GameOverMusic = pygame.mixer.Sound('over.wav')def GameStart():  # 游戲背景Surface對象  Background = pygame.image.load('GameBackground.jpg').convert()  # 擋板Surface對象  Baffle = pygame.image.load('Baffle.png').convert_alpha()  # 球Surface對象  Ball = pygame.image.load('Ball.png').convert_alpha()  # 擋板位置信息  BaffleX = 140  BaffleY = 600  BaffleSpeed = 1000  BaffleXSpeed = BaffleSpeed  BaffleYSpeed = BaffleSpeed  BaffleMove = {K_LEFT: 0, K_RIGHT: 0, K_UP: 0, K_DOWN: 0}  # 球位置信息  BallX = 235  BallY = 0  BallSpeed = 1000.  BallXSpeed = BallSpeed  BallYSpeed = BallSpeed  # 幀率控制Clock對象  FPSClock = pygame.time.Clock()  # 時間顯示Clock對象  ProgramRunClock = pygame.time.get_ticks()  # 時間顯示Font對象  RunTimeFont = pygame.font.Font('Jura-DemiBold.ttf', 24)  # 游戲結果  GameResult = ''  while True:    # 接收信息處理    for event in pygame.event.get():      if event.type == QUIT:        exit()      if event.type == KEYDOWN:        if event.key in BaffleMove:          BaffleMove[event.key] = 1      elif event.type == KEYUP:        if event.key in BaffleMove:          BaffleMove[event.key] = 0    # 繪制背景    Screen.blit(Background, (0, 0))    RunTimeStr = str((pygame.time.get_ticks() - ProgramRunClock) / 1000.0)    # print(RunTimeStr)    # 使用render方法顯示時間字體    RunTimeSurface = RunTimeFont.render(RunTimeStr, True, (255, 52, 179))    # 顯示時間    Screen.blit(RunTimeSurface, (0, 0))    # 距上次調用clock對象時間    SecondTimePassed = FPSClock.tick(60) / 1000.0    # 繪制球    Screen.blit(Ball, (BallX, BallY))    BallX += BallXSpeed * SecondTimePassed    BallY += BallYSpeed * SecondTimePassed    # 判斷球邊界條件    if BallX > 500 - Ball.get_width():      BallXSpeed = -BallXSpeed      BallX = 500 - Ball.get_width()    elif BallX < 0:      BallXSpeed = -BallXSpeed      BallX = 0    if BallY > 720 - Ball.get_width():      BallYSpeed = -BallYSpeed      BallY = 720 - Ball.get_width()    elif BallY < 0:      BallYSpeed = -BallYSpeed      BallY = 0    # 定位擋板移動后坐標    BaffleX -= BaffleMove[K_LEFT] * BaffleXSpeed * SecondTimePassed    BaffleX += BaffleMove[K_RIGHT] * BaffleXSpeed * SecondTimePassed    BaffleY -= BaffleMove[K_UP] * BaffleYSpeed * SecondTimePassed    BaffleY += BaffleMove[K_DOWN] * BaffleYSpeed * SecondTimePassed    # 判斷擋板邊界條件    if BaffleX > 500 - Baffle.get_width():      BaffleX = 500 - Baffle.get_width()    elif BaffleX < 0:      BaffleX = 0    if BaffleY > 720 - 45 - Baffle.get_height():      BaffleY = 720 - 45 - Baffle.get_height()    elif BaffleY < 720 - Baffle.get_height() * 3:      BaffleY = 720 - Baffle.get_height() * 3    # 繪制擋板    Screen.blit(Baffle, (BaffleX, BaffleY))    # 判斷球碰撞擋板條件    # 擋板左上角    if BallX == BaffleX - Ball.get_width() and BallY == BaffleY - Ball.get_height():      BallXSpeed = -BallXSpeed      BallYSpeed = -BallYSpeed      CollisionMusic.play()    # 擋板左下角    elif BallX == BaffleX - Ball.get_width() and BallY == BaffleY + Baffle.get_height():      BallXSpeed = -BallXSpeed      BallYSpeed = -BallYSpeed      CollisionMusic.play()    # 擋板右上角    elif BallX == BaffleX + Baffle.get_width() and BallY == BaffleY - Ball.get_height():      BallXSpeed = -BallXSpeed      BallYSpeed = -BallYSpeed      CollisionMusic.play()    # 擋板右下角    elif BallX == BaffleX + Baffle.get_width() and BallY == BaffleY + Baffle.get_height():      BallXSpeed = -BallXSpeed      BallYSpeed = -BallYSpeed      CollisionMusic.play()    # 擋板上表面    elif BallX > BaffleX and BallX < BaffleX + Baffle.get_width() and BallY > BaffleY - Ball.get_height() and BallY < BaffleY:      BallYSpeed = -BallYSpeed      BallY = BaffleY - Ball.get_height()      CollisionMusic.play()    # 擋板下表面    elif BallX > BaffleX and BallX < BaffleX + Baffle.get_width() and BallY < BaffleY + Baffle.get_height() and BallY > BaffleY:      BallYSpeed = -BallYSpeed      BallY = BaffleY + Baffle.get_height()      CollisionMusic.play()    # 擋板左側面    elif BallY > BaffleY and BallY < BaffleY + Baffle.get_height() and BallX > BaffleX - Ball.get_width() and BallX < BaffleX:      BallXSpeed = -BallXSpeed      BallX = BaffleX      CollisionMusic.play()    # 擋板右側面    elif BallY > BaffleY and BallY < BaffleY + Baffle.get_height() and BallX > BaffleX + Baffle.get_width() - Ball.get_width() and BallX < BaffleX + Baffle.get_width():      BallXSpeed = -BallXSpeed      BallX = BaffleX + Baffle.get_width()      CollisionMusic.play()    if BallY > 720 - 45:      GameResult = RunTimeStr      GameOverMusic.play()      return GameResult    # 刷新顯示    pygame.display.update()def GameResult(GameResult):  # 游戲結果背景Surface對象  GameResultBackground = pygame.image.load('GameResultBackground.png').convert()  # 游戲結果引導  ResultHint = pygame.image.load('ResultFont.png').convert_alpha()  # 游戲結果Font對象  GameResultFont = pygame.font.Font('EuroBold.ttf', 100)  # 重新開始按鈕  ReStartButton = pygame.image.load('ReStartButton.png').convert_alpha()  # 重新開始Hover按鈕  ReStartButtonHover = pygame.image.load('ReStartButtonHover.png').convert_alpha()  while True:    for event in pygame.event.get():      if event.type == QUIT:        exit()      if event.type == pygame.MOUSEBUTTONDOWN and 150 <= event.pos[        0] <= 150 + ReStartButton.get_width() and 450 <= event.pos[1] <= 450 + ReStartButton.get_height():        ButtonMusic.play()        return True    # 游戲結果背景    Screen.blit(GameResultBackground, (0, 0))    # 游戲結果引導    Screen.blit(ResultHint, (45, 200))    RunTimeSurface = GameResultFont.render(GameResult, True, (255, 69, 0))    Screen.blit(RunTimeSurface, (90, 270))    # 重新開始游戲按鈕    MouseX, MouseY = pygame.mouse.get_pos()    if 150 <= MouseX <= 150 + ReStartButton.get_width() and 450 <= MouseY <= 450 + ReStartButton.get_height():      Screen.blit(ReStartButtonHover, (150, 450))    else:      Screen.blit(ReStartButton, (150, 450))    # 游戲結果    pygame.display.update()if __name__ == '__main__':  flag = True  while flag:    GameResultStr = GameStart()    if GameResultStr != '':      flag = GameResult(GameResultStr)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色av中文字幕一区| 一区二区三区四区在线观看视频| 日韩在线免费视频| 成人午夜高潮视频| 色悠悠久久88| 欧美黑人国产人伦爽爽爽| 欧美在线中文字幕| 日本欧美在线视频| 久久艳片www.17c.com| 伊人一区二区三区久久精品| 亚洲国产成人精品电影| 深夜精品寂寞黄网站在线观看| 久久人人爽人人爽人人片亚洲| 国产综合在线看| 97超级碰碰碰| 91精品久久久久久综合乱菊| 91免费精品国偷自产在线| 亚洲a区在线视频| 麻豆国产va免费精品高清在线| 中文字幕不卡在线视频极品| 亚洲一区二区久久| 久久久久久久久久国产| 日韩午夜在线视频| 亚洲女人初尝黑人巨大| 亚洲国产精品大全| 亚洲自拍在线观看| 欧美在线不卡区| 成人黄色激情网| 欧美激情一区二区三级高清视频| 另类美女黄大片| 高清一区二区三区日本久| www.国产精品一二区| 国产视频综合在线| 欧美激情精品久久久久久蜜臀| 国产激情久久久| 日韩天堂在线视频| 久久精品国产91精品亚洲| 久久深夜福利免费观看| 在线观看国产欧美| 亚洲少妇中文在线| 欧美精品videos性欧美| 成人午夜在线视频一区| 欧美成人免费va影院高清| 亚洲精品第一页| 日韩av在线电影网| 精品香蕉一区二区三区| 国产在线一区二区三区| 久久精品这里热有精品| 欧美黄色片在线观看| 高清欧美性猛交xxxx黑人猛交| 成人在线国产精品| 国产综合色香蕉精品| 国产不卡一区二区在线播放| 91九色国产视频| 国产精品久久婷婷六月丁香| 97国产在线观看| 亚洲va欧美va国产综合剧情| 国产精品一区二区三区久久| 91精品啪aⅴ在线观看国产| 精品色蜜蜜精品视频在线观看| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品成人久久| 亚洲一区二区三区在线视频| 欧美性猛交xxxx免费看漫画| 夜夜嗨av一区二区三区四区| 久久影院资源站| 国产精品久久久久久亚洲影视| 91美女福利视频高清| 性欧美长视频免费观看不卡| 成人激情视频在线观看| 亚洲xxxx视频| 色妞久久福利网| 国产成人精品日本亚洲| 成人h猎奇视频网站| 中国人与牲禽动交精品| 亚洲国产高清福利视频| 亚洲天堂2020| 欧美精品18videos性欧| 岛国视频午夜一区免费在线观看| 中文字幕精品一区二区精品| 欧美日韩一区二区精品| 国产精品福利无圣光在线一区| 欧美一区二区三区精品电影| 国产精品久久久久久一区二区| 国产香蕉一区二区三区在线视频| 精品久久久久久久久中文字幕| 国产精品视频免费观看www| 国产精品国产三级国产aⅴ浪潮| 国产日韩换脸av一区在线观看| 国产精品6699| 国产精品网址在线| 色噜噜狠狠狠综合曰曰曰| 伊人久久免费视频| 久久夜色撩人精品| 国产999精品视频| 久久精品亚洲94久久精品| 亚洲视频日韩精品| 97在线看免费观看视频在线观看| 亚洲精品国产品国语在线| 一区二区三区 在线观看视| 久久视频免费在线播放| 亚洲人成电影网站| 伊人久久久久久久久久久| 国产日韩在线观看av| 国产精品视频自在线| 欧美精品18videos性欧美| 欧美又大又硬又粗bbbbb| 国产999在线观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲欧美日韩中文在线制服| 日韩一二三在线视频播| 亚洲女同精品视频| 久久99国产精品久久久久久久久| 国产精品久久久久久久久久三级| 精品久久久一区二区| 亚洲男人天堂网站| 国模精品系列视频| 欧美大肥婆大肥bbbbb| 欧美日韩国产专区| 97在线看免费观看视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩亚洲欧美中文在线| 亚洲福利影片在线| 国产一区二区三区在线观看网站| 欧美第一黄网免费网站| 国产日韩精品在线| 性色av一区二区三区在线观看| 欧美亚洲成人xxx| 久久久亚洲福利精品午夜| 欧美精品videos另类日本| 欧美又大粗又爽又黄大片视频| 欧美激情xxxx性bbbb| 青青草精品毛片| 欧美一区二区大胆人体摄影专业网站| 久久伊人色综合| 亚洲人午夜精品免费| 日韩美女写真福利在线观看| 亚洲国产又黄又爽女人高潮的| 亚洲tv在线观看| 欧美美女15p| 一区二区亚洲精品国产| 欧美激情在线狂野欧美精品| 久久久www成人免费精品张筱雨| 亚洲国产精品网站| 国产成人综合久久| 国产精品久久久久久久久借妻| 国产99视频精品免视看7| 一本色道久久88精品综合| 日韩经典一区二区三区| 亚洲第一页中文字幕| 国产精品视频久久| 在线视频欧美性高潮| 日韩欧美国产高清91| 欧美黑人极品猛少妇色xxxxx| 亚洲欧美综合另类中字| 欧美高清性猛交| 欧美精品videos性欧美| 中文字幕在线看视频国产欧美在线看完整| 中文字幕在线看视频国产欧美| 91在线国产电影| 国产精品久久久久久久久久久久| 欧美高清电影在线看| 国产精品视频区1| 91成人免费观看网站|