用python實現打磚塊小遊戲
本文實例為大傢分享瞭python實現打磚塊小遊戲的具體代碼,供大傢參考,具體內容如下
開發益智的打磚塊小遊戲,你可以試一下能打幾塊
import pygame,sys,time,random from pygame.locals import * # from static_params import * #引入所有靜態參數 from GameClass import * pygame.init() #初始化遊戲 mainclock = pygame.time.Clock() #時鐘設置 Exit =0 global Surface Surface = pygame.display.set_mode([WindowWidth,WindowHeight],0,32) #窗口設置 pygame.display.set_caption('打磚塊遊戲') #設置窗口標題 def BeforeGame(): StartImage = pygame.image.load('intro_Ball.png').convert_alpha() #開始圖像的界面 button = Button(Surface,FontColor,TextLocation,'StartGame') flag = True while flag: for event in pygame.event.get(): if event.type ==QUIT: Exit = 1 pygame.quit() exit() if event.type == MOUSEBUTTONUP: if button.is_overed(): flag = False Surface.blit(StartImage,ImageLocation) button.ButtonBlit() pygame.display.update() mainclock.tick(100) def Gaming(): #設置一個暫停函數 def pause(): button = Button(Surface,FontColor,TextLocation,'Continue') Surface.fill((0,0,0)) flag = True while flag: for event in pygame.event.get(): if event.type ==QUIT: Exit = 1 pygame.quit() exit() if event.type == MOUSEBUTTONUP: if button.is_overed(): flag = False pygame.mouse.set_visible(True) button.ButtonBlit() pygame.display.update() mainclock.tick(100) Ball = ball(BallCenter,BallRadius,BallColor,BallSpeed,MoveAngle,Surface) paddle = Paddle(0,WindowHeight-PaddleHeight,PaddleWidth,PaddleHeight,PaddleColor,Surface) # 設置一個磚塊類的矩陣 BrickMatrix = [[Brick(i,j,BrickWidth,BrickHeight,BrickHitNumber,BrickColor,Surface) for i in range(0,100,BrickWidth+3) if i+BrickWidth<640]\ for j in range(0,50,BrickHeight+2)] mouse_x,mouse_y = pygame.mouse.get_pos() while True: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() if event.type == MOUSEMOTION: mouse_x, mouse_y = event.pos #判斷鼠標的位置 if event.type == KEYDOWN: #按下空格鍵暫停 if event.key == K_SPACE: pause() Surface.fill((0,0,0)) #設置鼠標為不可見狀態 pygame.mouse.set_visible(False) #判斷球的運動 #判斷是否撞上瞭邊界或者擋板 if Ball.center[1]+Ball.radius+paddle.height > WindowHeight: if Ball.center[0]>paddle.left and Ball.center[0]<paddle.left+paddle.width: Ball.rebound4() #判斷是否裝上瞭左邊界 elif Ball.center[0]-Ball.radius<interval: Ball.rebound1() elif Ball.center[0]+Ball.radius>WindowWidth-interval: Ball.rebound2() #判斷是否撞上瞭上邊界 elif Ball.center[1]-Ball.radius<interval: Ball.rebound3() for brickline in BrickMatrix: for brick in brickline: if brick.exist == 1: if brick.top >Ball.center[1] and brick.top-Ball.center[1]-Ball.radius<interval and Ball.speedy>0 and Ball.center[0]>brick.left and Ball.center[0]<brick.right: print(1,Ball.center,brick.left,brick.right,brick.top,brick.bottom,Ball.radius) Ball.rebound4() brick.hitnumber =brick.hitnumber-1 if Ball.center[1]>brick.bottom and Ball.center[1]-Ball.radius-brick.bottom<interval and Ball.speedy<0 and Ball.center[0]>brick.left and Ball.center[0]<brick.right: print(2,Ball.center,brick.left,brick.right,brick.top,brick.bottom,Ball.radius) Ball.rebound3() brick.hitnumber =brick.hitnumber-1 if Ball.center[0]< brick.left and brick.left-Ball.center[0]-Ball.radius<interval and Ball.speedx>0 and Ball.center[1]>brick.top and Ball.center[1]<brick.bottom: print(3,Ball.center,brick.left,brick.right,brick.top,brick.bottom,Ball.radius) Ball.rebound2() brick.hitnumber =brick.hitnumber-1 if Ball.center[0]>brick.right and Ball.center[0]-Ball.radius-brick.right<interval and Ball.speedx<0 and Ball.center[1]>brick.top and Ball.center[1]<brick.bottom: print(4,Ball.center,brick.left,brick.right,brick.top,brick.bottom,Ball.radius) Ball.rebound1() brick.hitnumber =brick.hitnumber-1 if brick.hitnumber <= 0: brick.exist = 0 #所有的磚塊都不存在瞭,則遊戲勝利 if all([not any([brick.exist for brick in line]) for line in BrickMatrix] ): return 'Win' # print(brick.hitnumber,brick.exist) Ball.move() paddle.get_pos(mouse_x) if Ball.fall(): return 'Fail' #畫出圖形 for brickline in BrickMatrix: for brick in brickline: brick.draw() Ball.draw() paddle.draw() pygame.display.update() #每秒鐘執行100次該代碼,用來控制遊戲循環頻率 mainclock.tick(100) def AfterGame(text): result = pygame.font.SysFont('comicsansms',100).render(text,1,(0,255,0)) Surface.blit(result,ImageLocation) button1 = Button(Surface,FontColor,TextLocation,'PLAY IT AGAIN') button2 = Button(Surface,FontColor,TextLocation2,'QUIT') flag = True while flag: pygame.mouse.set_visible(True) for event in pygame.event.get(): if event.type == QUIT: Exit = 1 pygame.quit() exit() if event.type == MOUSEBUTTONUP: if button1.is_overed(): flag = False if button2.is_overed(): Exit = 1 pygame.quit() exit() button1.ButtonBlit() button2.ButtonBlit() pygame.display.update() mainclock.tick(100) def main(): #展示遊戲開始前的信息 BeforeGame() print(Exit) #開始遊戲循環 while not Exit: com=Gaming() AfterGame(com) if __name__ =='__main__': main()
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持LevelAH。
推薦閱讀:
- python pygame實現打磚塊遊戲
- 教你利用pygame模塊制作跳躍小球小遊戲
- pygame實現滑塊接小球遊戲
- Pygame Rect區域位置的使用(圖文)
- 教你用Python pygame設置窗口標題和圖標