日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

雷电pygame代码

發布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 雷电pygame代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import pygame, os import time import random from pygame.sprite import Sprite from pygame.sprite import Groupdef fire_music():pass# 設置開火音樂# effect = pygame.mixer.Sound('sounds/fire.wav')# pygame.mixer.Sound.play(effect)class Boss(Sprite):def __init__(self,boss_img_name):super().__init__()# 加載BOSS圖片self.image = pygame.image.load('圖片/'+boss_img_name+'.png').convert_alpha()# 轉換BOSS大小# self.image = pygame.transform.scale(self.image, (1, 12))# 生成BOSS矩形框架self.rect = self.image.get_rect()self.blood = 1000# boss左右移動的速度self.speed = 3.5def move(self):if self.rect.centerx>=512:self.speed =-self.speedif self.rect.centerx<=0:self.speed = -self.speedself.rect.centerx +=self.speedclass Enemy(Sprite):def __init__(self,screen):# 必須設置繼承精靈 不然在使用精靈函數時會報錯super().__init__()# 獲取屏幕對象self.screen = screen# 隨機 生成5個編號alien_num = random.randint(1,5)# 隨機 加載五個飛機中的某個self.image = pygame.image.load('圖片/alien_' + str(alien_num) + '.png')# picture = pygame.transform.scale(picture, (1280, 720))self.image = pygame.transform.scale(self.image,(62,62))# 獲取飛機的 rectself.rect = self.image.get_rect()# 擊落本機獲得的分數self.score = 10# 加載子彈的圖片self.bullet_img = pygame.image.load("圖片/alien_bullet.png").convert_alpha()self.bullet_img = pygame.transform.scale(self.bullet_img, (12, 12))# 以下為可以調節子彈尺寸的代碼# picture = pygame.transform.scale(picture, (1280, 720))#飛機的移動速度self.speed = random.randint(3,5)#生成子彈精靈組合self.bullets = Group()# 敵機射擊頻率self.shoot_frequency = 0# 飛機出現def move(self):self.rect.top += 5#暫時不用射擊# self.shoot()# self.moveBullet()# 發射子彈def shoot(self):if self.shoot_frequency % 200 == 0:bullet = Enemy_Bullet(self.bullet_img, self.rect.midbottom)self.bullets.add(bullet)self.shoot_frequency += 1if self.shoot_frequency > 200:self.shoot_frequency = 1# 刪除子彈def moveBullet(self):for bullet in self.bullets:bullet.move()if bullet.rect.bottom < 0:self.bullets.remove(bullet)# 繪制子彈def drawBullets(self, scr):self.bullets.draw(scr)class Enemy_Bullet(pygame.sprite.Sprite):def __init__(self, init_pos):pygame.sprite.Sprite.__init__(self)self.image = pygame.image.load("圖片/alien_bullet.png").convert_alpha()self.image = pygame.transform.scale(self.image, (12, 12))self.rect = self.image.get_rect()# 敵機子彈初始位置設置self.rect.midbottom = init_posself.rect.centery +=36self.speed = 8def move(self):self.rect.top += self.speed class MyHero(Sprite):_rate = 100 # 每幀停留的毫秒數def __init__(self,screen,size = 1):super().__init__()# 獲取屏幕對象self.screen = screen# 獲取整張圖片self.image_big = pygame.image.load('圖片/hero.png').convert_alpha()# subsurface 形成大圖的子表面框架# 獲取飛機正面圖片self.image = self.image_big.subsurface(pygame.Rect(120, 0, 318 - 240, 87))# 獲取飛機正面矩形框架尺寸self.rect = self.image.get_rect()# 獲取屏幕對象矩形self.screen_rect = screen.get_rect()# 獲取屏幕正中x坐標self.rect.centerx = self.screen_rect.centerx# 獲取屏幕底部y坐標self.rect.centery = self.screen_rect.bottom - self.rect.height# 設置飛機初始位置self.centerX = float(self.rect.centerx)self.centerY = float(self.rect.centery)# 飛機尾焰self.air = None# 設置飛機尾焰位置self.air_rect = pygame.Rect(self.centerX - 20,self.centerY+int((self.rect.height+72)/2)-10-36,40,72)#玩家所有發射子彈的集合self.bullets = Group()self.bullet_image = pygame.image.load('圖片/bullet_1.png').convert_alpha()# 子彈射擊def shoot(self):# 產生一顆子彈實例bullet = Bullet(self.bullet_image,self.rect.midtop)# 在group子彈精靈集合中加入子彈self.bullets.add(bullet)# 子彈刪除def moveBullet(self):# 逐個檢查子彈精靈集合 到達屏幕頂端的子彈刪除for bullet in self.bullets:bullet.move()if bullet.rect.bottom < 0:self.bullets.remove(bullet)# 子彈顯示def drawBullets(self, scr):# 將精靈集合中的子彈繪制到屏幕上self.bullets.draw(scr)# 向上飛時,增加噴射火焰def set_air(self, case):if case == 'up':air = pygame.image.load('圖片/air.png').convert_alpha()img = air.subsurface(pygame.Rect(80, 0, 50, 87))self.air = imgelif case == 'remove':self.air = None# 根據移動方向獲取飛機移動狀態的圖片def set_image(self, case):if case=='left':rect = pygame.Rect(195,0,318-248,87)image = self.image_big.subsurface(rect)elif case =='right':rect = pygame.Rect(195,0,318-248,87)image = pygame.transform.flip(self.image_big.subsurface(rect), True, False)elif case == 'up' or case == 'down':rect = pygame.Rect(120, 0, 318 - 240, 87)image = self.image_big.subsurface(rect)self.image = imageclass Bullet(pygame.sprite.Sprite):def __init__(self, bullet_img, init_pos):pygame.sprite.Sprite.__init__(self)self.image = bullet_imgself.rect = bullet_img.get_rect()self.rect.midbottom = init_posself.speed = 25def move(self):self.rect.top -= self.speed# 初始化pygame pygame.init() # pygame.mixer.init() # pygame.mixer_music.load('sounds/enviro.mp3') # 加載播放音樂 # pygame.mixer.music.play(-1) #-1 為循環播放 # 設置游戲主題 pygame.display.set_caption('AirCraft') # 初始化屏幕大小 screen = pygame.display.set_mode((512,768))# 設置游戲背景圖片 # 游戲剛開始時的背景圖 bg_img0 = pygame.image.load('圖片/start_bg.jpg').convert() # 加載游戲開始圖標 start_img = pygame.image.load('圖片/start.png').convert_alpha() start_rect = start_img.get_rect() start_rect.centerx = 262 start_rect.centery = 455 # 游戲進行中的背景圖 bg_img1 = pygame.image.load('圖片/map1.jpg').convert() bg_img2 = bg_img1.copy() # 游戲結束時的背景圖 bg_img3 = pygame.image.load('圖片/map3.jpg').convert() # 加載游戲結束圖標 gameover_img = pygame.image.load('圖片/gameover.png').convert_alpha() # 加載游戲成功圖標 gamesuccess = pygame.image.load('圖片/success.png').convert_alpha()# 加載重玩圖標 restart_img = pygame.image.load('圖片/restart.png').convert_alpha() restart_rect = restart_img.get_rect() restart_rect.centerx = 249 restart_rect.centery = 420 # 背景圖片初始位置 pos_y1 = -768 pos_y2 = 0# 實例化BOSS boss = Boss('boss_1') bosses = Group() bosses.add(boss) # 測試主角圖片 # air = pygame.image.load('圖片/air.png').convert_alpha() # img = air.subsurface(pygame.Rect(80, 0, 50, 87)) # image_big = pygame.image.load('圖片/hero.png').convert_alpha() # image = image_big.subsurface(pygame.Rect(195,0,318-248,87))# 生成我方飛機 student_plane = MyHero(screen)# 生成敵方飛機 # 生成敵機group enemies = Group() # 生成敵機子彈 enemy_bullets = Group() max_enemies = 9 # 設置敵機數量總數為9 # 敵機隨機出現的節奏 下方randint參數 為43,55 ran1,ran2 = 30,40# 生成計時頻率變量 sec = 0 # 生成分數 score = 0 # 設置系統字體 my_font = pygame.font.Font('fonts/msyh.ttf', 18)# 游戲主循環 # 設置游戲狀態 開始 結束 game = 'wait'while True:# 游戲在等待狀態if game =='wait':# 最小游戲框架一個都不能省略for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# 檢測鼠標是否按下 重新開始按鈕if event.type == pygame.MOUSEBUTTONDOWN:# 檢測鼠標點擊位置是否與重啟rect重疊if start_rect.collidepoint(event.pos):student_plane.__init__(screen)game = 'ing'# 游戲結束游戲畫面暫停screen.blit(bg_img0, (0, 0))screen.blit(start_img, start_rect)# 測試尾焰位置pygame.display.flip()time.sleep(0.05)# 游戲進行狀態elif game == 'ing':# 設置這3行 監聽事件 并且內部設定了延遲防止游戲卡死# 屏幕滾動-----------------------------------------------------screen.blit(bg_img1, (0, pos_y1))screen.blit(bg_img2, (0, pos_y2))# 測試尾焰位置# screen.blit(img, (100, 100))pos_y1 += 1pos_y2 += 1# 屏幕背景滾動完畢后重置位置if pos_y1 >= 0:pos_y1 = -768if pos_y2 >= 768:pos_y2 = 0for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# 監聽鍵盤事件# 按鍵彈起取消飛機向上尾焰 矯正飛機姿勢if event.type == pygame.KEYUP:student_plane.set_image('down')student_plane.air = None# 發射子彈if event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE and len(student_plane.bullets) <6: # 檢查子彈集合的數量限制子彈最大數量fire_music()# 產生一顆子彈實例# 在group子彈精靈集合中加入子彈student_plane.shoot()# 將精靈集合中的子彈繪制到屏幕上student_plane.drawBullets(screen)# 逐個檢查子彈精靈集合 到達屏幕頂端的子彈刪除student_plane.moveBullet()keys = pygame.key.get_pressed()if keys[pygame.K_a]:# 設置飛機狀態圖片student_plane.set_image('left')if student_plane.rect.centerx>=40:student_plane.rect.centerx -=8.5elif keys[pygame.K_d]:# 設置飛機狀態圖片student_plane.set_image('right')if student_plane.rect.centerx <= 478:student_plane.rect.centerx +=8.5elif keys[pygame.K_w]:#設置飛機狀態圖片student_plane.set_image('up')student_plane.set_air('up')if student_plane.rect.centery >= 45:student_plane.rect.centery -=8.5elif keys[pygame.K_s]:# 設置飛機狀態圖片student_plane.set_image('down')if student_plane.rect.centery <= 727:student_plane.rect.centery +=8.5# 顯示飛機screen.blit(student_plane.image,student_plane.rect)if student_plane.air != None:screen.blit(student_plane.air, (student_plane.rect.centerx-30, student_plane.rect.centery+33))# 敵機 ---------------------------------------------------------------------------------------# 敵機移動# 控制時間節奏 sec變量sec +=1#隨機控制生成敵機的節奏rhy = random.randint(ran1,ran2)# 敵機最多數量if sec%rhy ==0 and len(enemies) < max_enemies or sec ==1: # 設置敵機數量總數為9# 生成一只敵機enemy = Enemy(screen)enemy.rect.centerx=random.randint(0,512)# 生成上述敵機的子彈enemy_bullet = Enemy_Bullet((enemy.rect.centerx,enemy.rect.centery))# 敵機group 和 敵機子彈group加載敵機和子彈enemies.add(enemy)enemy_bullets.add(enemy_bullet)# 敵機出現 和 敵機子彈出現enemies.draw(screen)enemy_bullets.draw(screen)# 迭代敵機集合for enemy in enemies:# 讓每個對象移動起來enemy.move()# 敵機超出屏幕邊界后 自動刪除敵機collision_over1 = pygame.sprite.collide_rect(student_plane, enemy)if collision_over1:# 為了重啟游戲時 防止有舊子彈和飛機存在enemies.remove(enemy)game = 'over'if enemy.rect.bottom >768:enemies.remove(enemy)for enemy_bullet in enemy_bullets:# 讓每個對象移動起來enemy_bullet.move()collision_over2 = pygame.sprite.collide_rect(student_plane, enemy_bullet)if collision_over2:# 為了重啟游戲時 防止有舊子彈和飛機存在enemy_bullets.remove(enemy_bullet)game = 'over'# 敵機子彈超出屏幕邊界后 自動刪除敵機if enemy_bullet.rect.bottom >768:enemy_bullets.remove(enemy_bullet)# -----------------------Boss --------------------------if score >=140:# 小敵機出現的節奏ran1,ran2 = 15,25max_enemies = 17screen.blit(boss.image,boss.rect)boss.move()for my_bullet in student_plane.bullets:hit_boss = pygame.sprite.collide_rect(boss,my_bullet)if hit_boss:boss.blood -=1.2score+=1if boss.blood <=0:game = 'success'# 處理碰撞 ---------------------------碰撞檢測--------------------------------------------------#   參數:#   group1:精靈組1。#   group2:精靈組2。#   dokill1:發生碰撞時,是否銷毀精靈組1中的發生碰撞的精靈。#   dokill2:發生碰撞時,是否銷毀精靈組2中的發生碰撞的精靈。collisions = pygame.sprite.groupcollide(student_plane.bullets, enemies, True, True)if collisions:score+=10# -----------游戲結束------------# 分數和獎勵的顯示-------------------------------------------------------------------------surface1 = my_font.render(u"當前得分:%s"%(score),True,[255,0,0])screen.blit(surface1,[20,20])# 更新畫面pygame.display.flip()# 設置幀數和延遲time.sleep(0.05)#游戲結束狀態elif game == 'over':score = 0# 最小游戲框架一個都不能省略for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# 檢測鼠標是否按下 重新開始按鈕if event.type == pygame.MOUSEBUTTONDOWN:# 檢測鼠標點擊位置是否與重啟rect重疊if restart_rect.collidepoint(event.pos):student_plane.__init__(screen)game = 'ing'# 游戲結束游戲畫面暫停screen.blit(bg_img1, (0, pos_y1))screen.blit(bg_img2, (0, pos_y2))screen.blit(gameover_img, (163, 310))screen.blit(restart_img, restart_rect)# 測試尾焰位置# screen.blit(img, (100, 100))pos_y1 += 0pos_y2 += 0pygame.display.flip()time.sleep(0.05)# surface2 = my_font.render("Game Over" , True, [255, 0, 0])# screen.blit(surface1, [250, 350])elif game == 'success':score = 0boss.blood = 1000# 最小游戲框架一個都不能省略for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()# 檢測鼠標是否按下 重新開始按鈕if event.type == pygame.MOUSEBUTTONDOWN:# 檢測鼠標點擊位置是否與重啟rect重疊if restart_rect.collidepoint(event.pos):student_plane.__init__(screen)game = 'ing'# 游戲結束游戲畫面暫停screen.blit(bg_img1, (0, pos_y1))screen.blit(bg_img2, (0, pos_y2))screen.blit(gamesuccess, (170, 220))screen.blit(restart_img, restart_rect)# 測試尾焰位置# screen.blit(img, (100, 100))pos_y1 += 0pos_y2 += 0pygame.display.flip()time.sleep(0.05)

要圖片的

私信

總結

以上是生活随笔為你收集整理的雷电pygame代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。