700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Python游戏】Python各大游戏合集(4):足球 拳皇 阴阳师 蔡徐坤大战篮球 地

【Python游戏】Python各大游戏合集(4):足球 拳皇 阴阳师 蔡徐坤大战篮球 地

时间:2020-04-12 06:37:58

相关推荐

【Python游戏】Python各大游戏合集(4):足球 拳皇 阴阳师 蔡徐坤大战篮球  地

相关文件

关注小编,私信小编领取哟!

当然别忘了一件三连哟~~

公众号:Python日志

可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!!

源码领取:加Python学习交流群:773162165 可以领取哟

开发工具

Python版本:3.7.8

相关模块:

pygame模块;

random模块;

pyttsx3模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

一:足球

效果展示

部分代码展示

def myinit():screen = pygame.display.set_mode((769,563))g1 = pygame.image.load("g1.jpg").convert()g2 = pygame.image.load("hh.png").convert()t = 0timer = pygame.time.Clock()while(1):timer.tick(30)ticks = pygame.time.get_ticks();for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()screen.blit(g1,(0,0))t+= 1print(t)if t > 66:break;pygame.display.update()while(1):timer.tick(30)ticks = pygame.time.get_ticks();for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()if event.type == MOUSEBUTTONUP:mouse_up = event.buttonmouse_up_x,mouse_up_y = event.posif mouse_up_x > 245 and mouse_up_x < 469 and mouse_up_y> 368 and mouse_up_y < 470:returnscreen.blit(g2,(0,0))pygame.display.update()if __name__ == '__main__':pygame.init()screen = pygame.display.set_mode((1200, 800))pygame.display.set_caption("简单足球 公众号:Python日志 源码领取学习交流群:773162165")font = pygame.font.Font(None, 36)myinit()timer = pygame.time.Clock()n1 = 0n2 =0screen = pygame.display.set_mode((1200, 800))for x in range(10000):t = begin_a_game(n1,n2);if t == 1:n1 +=1else:n2 += 1

二:拳皇

效果展示

部分代码展示

import pygame as pgfrom .. import toolsfrom .. import constants as cclass MainMenu(tools._State):def __init__(self):super(MainMenu, self).__init__()self.reset_game_info()self.startup(0.0, self.persist)def startup(self, current_time, persist):#self.game_info = persist#self.persist = self.game_infoself.next = c.CHOOSINGself.state = c.PLAYself.setup_background()#self.setup_cursor()self.setup_UI()#self.setup_BGM()def setup_UI(self):self.UI = {c.PLAY: [{'image': pg.transform.scale(pg.image.load('images/UI/start_game.png'), (150, 50))},{'image': pg.transform.scale(pg.image.load('images/UI/start_game.png'), (180, 60))}],c.QUIT: [{'image': pg.transform.scale(pg.image.load('images/UI/exit_game.png'), (150, 50))},{'image': pg.transform.scale(pg.image.load('images/UI/exit_game.png'), (180, 60))}]}for state, k in zip(self.UI.keys(), range(0, 2)):for i in range(0, 2):rect = self.UI[state][i]['image'].get_rect()rect.centerx = c.SCREEN_WIDTH // 2rect.centery = 450 + 60 * kself.UI[state][i]['rect'] = rectdef setup_background(self):self.background = pg.transform.scale(pg.image.load('images/%s' % c.TITLE_SCREEN), c.SCREEN_SIZE)self.background_rect = self.background.get_rect()def setup_cursor(self):pass# self.cursor.image = pg.Surface([c.TITLE_CURSOR_WIDTH, c.TITLE_CURSOR_HEIGHT])# self.cursor.image.set_colorkey(c.BLACK)# self.cursor.rect = self.cursor.image.get_rect()# self.cursor.rect.x = 350# self.cursor.rect.y = 300# self.cursor.state = c.PLAYdef update(self, surface, keys, current_time):self.current_time = current_timeself.game_info[c.CURRENT_TIME] = self.current_timeself.update_cursor(keys)self.blit_everything(surface)def update_cursor(self, keys):if self.state == c.PLAY:if keys[pg.K_DOWN]:self.state = c.QUITif keys[pg.K_RETURN]:self.reset_game_info()self.done = Trueelif self.state == c.QUIT:if keys[pg.K_UP]:self.state = c.PLAYif keys[pg.K_RETURN]:self.quit = Truedef blit_everything(self, surface):surface.blit(self.background, self.background_rect)# surface.blit(self.cursor.image, self.cursor.rect)for state in self.UI.keys():if state == self.state:surface.blit(self.UI[state][1]['image'], self.UI[state][1]['rect'])else:surface.blit(self.UI[state][0]['image'], self.UI[state][0]['rect'])def get_event(self, event):passdef reset_game_info(self):self.game_info = {c.P1_CHARACTER: '',c.P2_CHARACTER: '',c.CURRENT_TIME: 0.0,c.P1_HP: 0,c.P2_HP: 0,c.P1_HEART: 0,c.P2_HEART: 0,}self.persist = self.game_infodef setup_BGM(self):pg.mixer.music.load('music/{}'.format(c.TITLE_BGM))pg.mixer.music.play()

三:阴阳师

效果展示

部分代码展示

# 进入游戏场景while True:# 游戏欢迎界面gs.welcome()time.sleep(3)# 游戏人物介绍gs.introduction_game_character()gs.please_select_game_character()input_figure = int(input('请输入您使用的游戏人物'))game_figure = gs.select_figure(input_figure)time.sleep(2)# 游戏场景介绍以及选择gs.introduction_game_scene()gs.please_select_scene()time.sleep(2)select_game = int(input('请输入您要进入的游戏场景'))# 开始游戏gs.enter_scene(game_figure, select_game)# 是否进入下一轮游戏print()end_game = input(" 是否接着开始下一次挑战(Y/N)")if end_game == 'N':print()print("游戏结束!")breakelif end_game == 'Y':print()print("接着开始")

四:蔡徐坤大战篮球

效果展示

部分代码展示

#游戏主函数def main():#循环播放背景音乐pygame.mixer.music.play(-1)#用于计算未暂停时经过的时间TIME = 0#生成CXKme = CXK.CXK(bg_size)#用于存放敌人enemies = pygame.sprite.Group()#生成小型敌人small_enemies = pygame.sprite.Group()add_small_enemies(small_enemies,enemies,40)#生成中型敌人mid_enemies = pygame.sprite.Group()add_mid_enemies(mid_enemies,enemies,10)#生成大型敌人big_enemies = pygame.sprite.Group()add_big_enemies(big_enemies,enemies,6)#生成普通子弹bullet1 = []bullet1_index = 0BULLET1_NUM = 4for i in range(BULLET1_NUM):bullet1.append(bullet.Bullet(me.rect.midtop))#生成超级子弹bullet2 = []bullet2_index = 0BULLET2_NUM = 8for i in range(BULLET2_NUM//2):bullet2.append(bullet.Bullet2((me.rect.centerx-10,me.rect.centery)))bullet2.append(bullet.Bullet2((me.rect.centerx+10,me.rect.centery)))clock = pygame.time.Clock()#爆炸图片索引e1_destroy_index = 0e2_destroy_index = 0e3_destroy_index = 0me_destroy_index = 0#统计得分score = 0score_font = pygame.font.Font("font/font.ttf",36)#暂停paused = Falsepause_nor_image = pygame.image.load("images/pause_1.png").convert_alpha()pause_pressed_image = pygame.image.load("images/pause_2.png").convert_alpha()resume_nor_image = pygame.image.load("images/start_1.png").convert_alpha()resume_pressed_image = pygame.image.load("images/start_2.png").convert_alpha()pause_rect = pause_nor_image.get_rect()pause_rect.left,pause_rect.top = width - pause_rect.width - 10,10paused_image = pause_nor_image#设置难度级别level = 1#全屏炸弹bomb_image = pygame.image.load("images/bomb.png").convert_alpha()bomb_rect = bomb_image.get_rect()bomb_font = pygame.font.Font("font/font.ttf",48)bomb_num = 3#护盾shield_image = pygame.image.load("images/shield.png").convert_alpha()shield_rect = shield_image.get_rect()#每30秒发放一个补给包bullet_supply = supply.Bullet_Supply(bg_size)bomb_supply = supply.Bomb_Supply(bg_size)shield_supply = supply.Shield_Supply(bg_size)SUPPLY_TIME = USEREVENTpygame.time.set_timer(SUPPLY_TIME,30*1000)#超级子弹定时器DOUBLE_BULLET_TIME = USEREVENT+1#无敌时间计时器INVINCIBLE_TIME = USEREVENT+2#暂停计时器PAUSE_TIME = USEREVENT+3pygame.time.set_timer(PAUSE_TIME,1*1000)#标志是否使用超级子弹is_double_bullet = False#标志是否有护盾is_protected = False#生命数量life_image = pygame.image.load("images/life.png").convert_alpha()life_rect = life_image.get_rect()life_num = 3#游戏结束画面gameover_font = pygame.font.Font("font/font.ttf",48)again_image = pygame.image.load("images/again.png").convert_alpha()again_rect = again_image.get_rect()gameover_image = pygame.image.load("images/gameover.png").convert_alpha()gameover_rect = gameover_image.get_rect()#用于切换图片CXK_switch_image = 1enemy_switch_image = 1#用于延迟delay = 100enemy_delay = 15#用于限制重复打开记录文件recorded = False#标志是否暂停过is_pause_time = False#主函数循环while True:for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()#如果有鼠标点击事件elif event.type == MOUSEBUTTONDOWN:#如果是鼠标左键点击暂停按键if event.button == 1 and pause_rect.collidepoint(event.pos):#更改暂停状态paused = not paused#如果当前为暂停if paused:#标志暂停过is_pause_time = True#暂停补给投放pygame.time.set_timer(SUPPLY_TIME,0)#背景音乐暂停pygame.mixer.music.pause()#音效暂停pygame.mixer.pause()#如果当前不是暂停状态else:#如果曾经暂停过if is_pause_time:#设置补给投放时间为30秒减去之前未暂停时经过的时间pygame.time.set_timer(SUPPLY_TIME,(30-TIME)*1000)#从新标志位未暂停is_pause_time = False#继续播放背景音乐pygame.mixer.music.unpause()#继续播放音效pygame.mixer.unpause()#检测鼠标移动事件elif event.type == MOUSEMOTION:#根据鼠标位置更改暂停/继续按键的样式if pause_rect.collidepoint(event.pos):if paused:paused_image = resume_pressed_imageelse:paused_image = pause_pressed_imageelse:if paused:paused_image = resume_nor_imageelse:paused_image = pause_nor_image#检测键盘按下的事件elif event.type == KEYDOWN:#如果按下空格键if event.key == K_SPACE:#如果炸弹数量不为0if bomb_num:#炸弹数量-1bomb_num -=1#使用炸弹音效播放bomb_sound.play()#屏幕内所有敌人暴毙for each in enemies:if each.rect.bottom > 0:each.active = False

五:地道战

效果展示

部分代码展示

import pygamefrom scene.fail_scene import FailScenefrom scene.tunnel_war_scene import TunnelWarScenefrom scene.win_scene import WinScenefrom actor.xiao_tie import XiaoTiefrom game import GAME_TITLE, SCREEN_WIDTH, SCREEN_HEIGHTfrom scene import ScenePassStatusfrom scene.welcome_scene import WelcomeSceneclass TunnelWarGame:def __init__(self):pygame.init()pygame.mixer.init()pygame.display.set_caption(GAME_TITLE)self.surface = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))self.clock = pygame.time.Clock()self.xiao_tie = XiaoTie(3070, 1460)self.current_scene = WelcomeScene(self.xiao_tie)self.flag = Falsedef run(self):while True:# 游戏循环down_flag = Falsefor event in pygame.event.get():# 关闭事件,进行退出处理if event.type == pygame.QUIT:exit()elif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:self.flag = not self.flagelse:down_flag = Truekey_list = pygame.key.get_pressed()# 1.获取场景的视窗图像current_surface = self.current_scene.get_current_surface()# 2.绘制窗口self.surface.blit(current_surface, (0, 0))# 3.场景的运动self.current_scene.run(down_flag, key_list)# 4.切换场景pass_status, next_scene_name = self.current_scene.get_pass_status()if pass_status != ScenePassStatus.normal:if next_scene_name:next_scene = globals()[next_scene_name](self.xiao_tie)self.current_scene = next_sceneelse:break# 通过时钟对象指定循环频self.clock.tick(40)# 调用flip方法更新显示,也可以使用update方法if not self.flag:pygame.display.flip()

好啦,今天的分享就到这里啦,源码获取可以看看相关文件哟!!

【Python游戏】Python各大游戏合集(4):足球 拳皇 阴阳师 蔡徐坤大战篮球 地道战 | 附带源码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。