100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【Pygame系列】@你 快来签收卡通Q弹的小奥特曼打小怪兽的小游戏啦~

【Pygame系列】@你 快来签收卡通Q弹的小奥特曼打小怪兽的小游戏啦~

时间:2018-08-31 09:48:42

相关推荐

【Pygame系列】@你 快来签收卡通Q弹的小奥特曼打小怪兽的小游戏啦~

前言

时光留声机。

1966年至今,它火了几十年。

推出上百部经典作品,作为史上首部特摄片。

奥特曼不仅是几代人的童年与回忆,更是小朋友的快乐,大朋友的情怀!

话说,大家都比较喜欢有趣的案例项目等等,那这个入门系列的实践就慢慢更新,穿插着来更新不

同的内容吧——今天给大家更新一款卡通Q弹的小奥特曼打小怪兽的小游戏!已此纪念。

正文

1)你最喜欢哪一个奥特曼打怪兽?

咳咳咳......可以换大家喜欢的奥特曼玩家素材哈,其实栗子完全分不清楚哈哈哈,所以找了一个卡通可爱的动漫奥特曼形象。不清楚打不打的赢🦅,写完你们自己试试?

2)准备哪些素材呢?

主角登场——怪兽登场哇着——有点儿可爱了。🧙‍♀️🧙‍♀️

这里仅展示小部分的素材的哈,其他的背景等等都是可以自己修改优化的。

3)需要哪些环境呢?

小编准备的环境:Python3、Pycharm社区版,然后游戏模块Pygame需要安装。

安装:pip install pygame

4)代码展示

主程序:

import pygamefrom pygame.locals import *from random import randintfrom sys import exitclass Basketball(pygame.sprite.Sprite):def __init__(self,basket_surface,basket_position):pygame.sprite.Sprite.__init__(self)self.image = basket_surfaceself.rect = self.image.get_rect()self.rect.topleft = basket_positionself.speed = 8def update(self):self.rect.top -= self.speedif(self.rect.top<-10):self.kill()class Thanos(pygame.sprite.Sprite):def __init__(self,thanos_surface,thanos_position):pygame.sprite.Sprite.__init__(self)self.image = thanos_surfaceself.rect = self.image.get_rect()self.rect.topleft = thanos_positionself.speed = 2def update(self):self.rect.top += self.speedif self.rect.top>SCREEN_HEIGHT:self.kill()global scorescore-=10global missedmissed+=1class CXK(pygame.sprite.Sprite):def __init__(self,cxk_surface,cxk_position):pygame.sprite.Sprite.__init__(self)self.image = cxk_surfaceself.rect = self.image.get_rect()self.rect.topleft = cxk_positionself.speed = 5self.isJi = Falseself.bsks = pygame.sprite.Group()def move(self,offset):# 改变cxk的位置,并做边缘判断offset_x = offset[pygame.K_RIGHT] - offset[pygame.K_LEFT]offset_y = offset[pygame.K_DOWN] - offset[pygame.K_UP]# 横向边缘判断cxk_position_x = cxk.rect.left + offset_xif cxk_position_x < 0:cxk.rect.left = 0elif cxk_position_x > 400:cxk.rect.left = 400else:cxk.rect.left = cxk_position_x# 纵向边缘判断cxk_position_y = cxk.rect.top + offset_yif cxk_position_y < 150:cxk.rect.top = 150elif cxk_position_y > 700:cxk.rect.top = 700else:cxk.rect.top = cxk_position_ydef singleShoot(self,bsk1_image):bsk1 = Basketball(bsk1_image,(self.rect.left+58,self.rect.top+45))#控制发射位置self.bsks.add(bsk1)SCREEN_WIDTH = 600SCREEN_HEIGHT = 900offset={pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0}pygame.init()pygame.mixer.init()pygame.time.delay(1000)clock = pygame.time.Clock()screen = pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])pygame.display.set_caption("小奥特曼打小灭霸")#标题ticks = 0#载入背景background=pygame.image.load('resources/images/bg.png')#载入游戏结束画面gameover = pygame.image.load('resources/images/gameover.png')#载入主角cxk的图片并设置初始位置cxk_image = pygame.image.load('resources/images/cxk.png')cxk_position = [200,650]#死亡时变鸡的图片及游戏结束倒计时ji_image = pygame.image.load('resources/images/ji.png')countdown = 0#实例化主角cxkcxk = CXK(cxk_image,cxk_position)#载入篮球图片bsk_image = pygame.image.load('resources/images/basket.png')#载入敌人图片thanos_image = pygame.image.load('resources/images/thanos.png')thanos_group = pygame.sprite.Group()thanos_down_group = pygame.sprite.Group()#设置字体score = 0pygame.font.init()score_font = pygame.font.SysFont(None,32)score_font.set_bold(True)#载入射击ji_sound = pygame.mixer.Sound('resources/audios/ji.ogg')si_sound = pygame.mixer.Sound('resources/audios/si.ogg')#载入背景音乐pygame.mixer.music.load('resources/audios/bgm.mp3')pygame.mixer.music.play(-1)#设置错过的灭霸数量missed = 0missed_font = pygame.font.SysFont(None,32)missed_font.set_bold(True)while True:#设置帧率clock.tick(90)#绑定背景图片screen.blit(background,(0,0))#设置分数面板ScoreFaceText = score_font.render("Score:"+str(score),True,(0,0,0))Scoretext = ScoreFaceText.get_rect()Scoretext.topleft = (10,10)screen.blit(ScoreFaceText,Scoretext)#设置miss面板MissedFaceText = missed_font.render("Missed:"+str(missed)+" (5 to die)",True,(0,0,0))Missedtext = MissedFaceText.get_rect()Missedtext.topleft = (10,40)screen.blit(MissedFaceText,Missedtext)#绑定人物图片if cxk.isJi :cxk.image = ji_imagesi_sound.play()countdown+=1if countdown == 40:pygame.mixer.music.stop()#结束游戏后停止背景音乐break#变成鸡后退出循环else:cxk.image = cxk_image#更新篮球图片cxk.bsks.update()cxk.bsks.draw(screen)#产生灭霸图片if ticks % 60 == 0:t = Thanos(thanos_image,[randint(0,SCREEN_WIDTH-thanos_image.get_width()),thanos_image.get_height()])thanos_group.add(t)#根据得分增加游戏难度if 200<=score<=400:t.speed = 3elif 400<score<=500:t.speed = 4elif 500<score<=1000:t.speed = 5elif score>1000:t.speed = 8thanos_group.update()thanos_group.draw(screen)#击毁并计分pre = len(thanos_down_group)thanos_down_group.add(pygame.sprite.groupcollide(thanos_group,cxk.bsks,True,True))if len(thanos_down_group)>pre:score+=10#坠鸡thanos_down_list = pygame.sprite.spritecollide(cxk,thanos_group,True)if len(thanos_down_list)>0:thanos_down_group.add(thanos_down_list)cxk.isJi = True#当missed大于5时,退出游戏if missed>=5:cxk.isJi = Truescreen.blit(cxk.image,cxk.rect)ticks+=1pygame.display.update()for event in pygame.event.get():#处理游戏退出if event.type == pygame.QUIT:pygame.quit()exit(0)#检测按键if event.type == pygame.KEYDOWN:if event.key in offset:offset[event.key] = cxk.speedelif event.key == pygame.K_a:cxk.singleShoot(bsk_image)ji_sound.play()elif event.type == pygame.KEYUP:if event.key in offset:offset[event.key] = 0cxk.move(offset)#跳出前一段循环,进入游戏结束画面screen.blit(gameover,(0,0))pygame.mixer.music.load('resources/audios/dead.mp3')pygame.mixer.music.play()while True:pygame.display.update()#显示最后得分score_font = pygame.font.SysFont(None, 72)ScoreFaceText = score_font.render("Final Score:" + str(score), True, (0, 0, 0))Scoretext = ScoreFaceText.get_rect()Scoretext.topleft = (130, 140)screen.blit(ScoreFaceText, Scoretext)#退出界面for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()

5)效果展示

游戏规则:

每击败一个小灭霸可获得10分,每漏掉一个小灭霸扣十分,被灭霸接触到或漏掉的超过5个均会死亡。当积分超过1000,会出现最终bosssxc,他的左右两边会发射条状激光。

彩蛋:你的大boss一直在默默地关注着你,如果你一直向左上角发射,你就有机会干掉他让这个游戏直接结束,不过他血很厚,你在打他的同时也要时刻关注漏掉的灭霸数量

运行截图——

结尾

奥特曼——永远是我们心中那颗不灭的星。嘿嘿游戏写完了,大家自取哈。都是免费滴!

滴滴我即可啦~

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