当前位置:网站首页>【Pygame小游戏】10年前风靡全球的手游《愤怒的小鸟》,是如何霸榜的?经典回归......
【Pygame小游戏】10年前风靡全球的手游《愤怒的小鸟》,是如何霸榜的?经典回归......
2022-04-23 16:13:00 【嗨!栗子同学】
前言
嘻嘻,很久没给大家更新新的内容啦~有点儿原因,文章这次重新给大家上架一下下!
之后还会每天写新的文章哒~本期的这篇文章我们做点儿简单滴,来做一
下Python版本《愤怒的小鸟》简约版跟一个不那么简约版的一起来哈~
所有文章完整的素材+源码都在
为什么说是简约版?因为第一个版本研究了很久,还没写出来,一个算是失败的作品,没啥游戏体
验感代码也超级简单,2333 准备继续找找别的大佬写的代码做参考去了!后来想想还是续写一个
简易版跟不那么简易两个版本的吧~太简单担心大家都会做了~哈哈哈哈.jpg
正文
本文的游戏大概就是一只愤怒的小鸟左右duangduangduang来回撞!笑哭
因为代码很简单我感觉可以直接给大家标上去了
一、简约版
环境安装
Python3、 Pycharm 、Pygame模块。(如需安装包、激活码等直接私信我即可安装问题解答
都可以的哈~)
第三方库的安装:pip install pygame
1)代码展示
import pygame,sys
pygame.init()#初始化操作
#保存窗口大小
width,height=600,400
screen=pygame.display.set_mode([width,height])#创建游戏窗口
#设置窗口标题
pygame.display.set_caption("愤怒的小鸟")
#加载小鸟素材
player=pygame.image.load("xiaoniao.png")
#获取图像矩形位置
rect=player.get_rect()
#声明XY运动速度的列表
speed = [3,2]
left_head = pygame.transform.flip(player,True,False)
right_head = player
#无限循环
while True:
for event in pygame.event.get():
if event.type ==pygame.QUIT:
exit()
if event.type ==pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player = left_head #小鸟的头向左
speed=[-2,1]
if event.key == pygame.K_RIGHT:
player = right_head #小鸟的头向左
speed=[2,1]
if event.key == pygame.K_UP:
player = left_head #小鸟的头向左
speed=[2,-1]
if event.key == pygame.K_DOWN:
player = right_head #小鸟的头向左
speed=[2,1]
rect =rect.move(speed)
if rect.right>width or rect.left<0:
#将图片水平翻转 反转对象 是否水平反转 是否垂直翻转
player = pygame.transform.flip(player,True,False)
speed[0]=-speed[0]
if rect.bottom>height or rect.top<0:
speed[1]=-speed[1]
screen.fill((255,255,255))
screen.blit(player,rect)
pygame.display.update()
pygame.time.delay(10)
2)效果展示
其实截图的话不怎么展示的出来效果——
其实这个游戏可以飘了
二、不那么简约版
环境安装
Python3、 Pycharm 、Pygame模块。(如需安装包、激活码等直接私信我即可安装问题解答
都可以的哈~)
第三方库的安装:pip install pygame
1)代码展示
import pygame
import sys
from pygame.locals import *
from random import randint
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('愤怒的小鸟背景音效.wav')
pygame.mixer.music.set_volume(0.2)
pygame.mixer.music.play(loops=-1)
bg = pygame.image.load('愤怒的小鸟背景图3.jpg')
bg_position = bg.get_rect()
size = width, height = 1000, 570
screen = pygame.display.set_mode(size)
pygame.display.set_caption('愤怒的小鸟!')
def main():
class Bird(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
position=100,100
self.image=pygame.image.load('愤怒的小鸟里的小鸟.png')
self.rect=self.image.get_rect()
self.rect.center=position
def move_left(self):
self.speed=[-5,0]
if self.rect.left<=0:
self.rect.left=0
else:
self.rect=self.rect.move(self.speed)
def move_right(self):
self.speed=[5,0]
if self.rect.right>=1000:
self.rect.right=1000
else:
self.rect=self.rect.move(self.speed)
def move_up(self):
self.speed=[0,-5]
if self.rect.top<=0:
self.rect.top=0
else:
self.rect=self.rect.move(self.speed)
def move_down(self):
self.speed=[0,5]
if self.rect.bottom>=570:
self.rect.bottom=570
else:
self.rect=self.rect.move(self.speed)
class Pig(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
y=randint(0,570)
position=[1000,y]
self.image=pygame.image.load('愤怒的小鸟里的小猪.png')
self.rect=self.image.get_rect()
self.rect.center=position
self.speed=[-4,0]
def move(self):
self.rect=self.rect.move(self.speed)
bird=Bird()
i=0
group=pygame.sprite.Group()
state=True
while state:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
key=pygame.key.get_pressed()
if key[K_LEFT]:
bird.move_left()
if key[K_RIGHT]:
bird.move_right()
if key[K_UP]:
bird.move_up()
if key[K_DOWN]:
bird.move_down()
screen.blit(bg, bg_position)
screen.blit(bird.image,bird.rect)
i=i+1
if i%10==0:
pig=Pig()
group.add(pig)
for p in group.sprites():
p.move()
screen.blit(p.image,p.rect)
if pygame.sprite.collide_mask(bird,p):
state=False
pause()
pygame.display.flip()
pygame.time.Clock().tick(60)
def pause():
bg_go = pygame.image.load('愤怒的小鸟gameover图.jpg')
bg_go_pos = bg_go.get_rect()
size = width, height = 1000, 570
screen = pygame.display.set_mode(size)
pygame.display.set_caption('GameOver!')
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
img_src=pygame.image.load('重玩按钮.jpg')
img_src_pos=img_src.get_rect()
mouse_press=pygame.mouse.get_pressed()
mouse_pos=pygame.mouse.get_pos()
left=img_src_pos.left
right=img_src_pos.right
top=img_src_pos.top
bottom=img_src_pos.bottom
if left+100<mouse_pos[0]<right+100 and top+185<mouse_pos[1]<bottom+185:
img_src=pygame.image.load('重玩按钮2.jpg')
if mouse_press[0]:
main()
img_src_pos = img_src.get_rect().center = 100, 185
screen.blit(bg_go, bg_go_pos)
screen.blit(img_src,img_src_pos)
pygame.display.flip()
main()
2)效果展示
游戏界面:(游戏运行之后都是有音效的哦,游戏规则就是躲避右边的小猪啦)
游戏结束!
总结
时隔多年,小编写代码的水平都飞起来了,说明技术还是提升了的,大家放心观看!往期还有很多
源码等着你们自己拿自己看呢!
完整的素材等:也可以滴滴我吖!或者点击文末自取免费拿的哈~
往期推荐阅读——
项目1.6 【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~
项目2.2【Pygame小游戏】扫雷游戏50多岁了,但这款我能玩一年~(三个版本集合)
项目0.5 【视频倒放神器】超级玩法:千万不要倒放视频,太魔性了根本停不下来......
项目0.6 【Python小程序】隐藏表白图:“你永远都不知道我喜欢你”(建议保存)
项目0.4 Python教程:去除背景,我保证不动她一根头发(附多种方式)
文章汇总——
项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了
(更多内容+源码都在文章汇总哦!!欢迎阅读~)
文章汇总——
汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)
(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)
版权声明
本文为[嗨!栗子同学]所创,转载请带上原文链接,感谢
https://blog.csdn.net/xy258009/article/details/124354545
边栏推荐
- Day (2) of picking up matlab
- The most detailed Backpack issues!!!
- Oak-d raspberry pie cloud project [with detailed code]
- PHP 零基础入门笔记(13):数组相关函数
- Intersection, union and difference sets of spark operators
- New developments: new trends in cooperation between smartmesh and meshbox
- Six scenarios of cloud migration
- Method 2 of drawing ROC curve in R language: proc package
- VIM specifies the line comment and reconciliation comment
- Cloudy data flow? Disaster recovery on cloud? Last value content sharing years ago
猜你喜欢
Day 10 abnormal mechanism
一文掌握vscode远程gdb调试
撿起MATLAB的第(9)天
C语言自编字符串处理函数——字符串分割、字符串填充等
Website pressure measurement tools Apache AB, webbench, Apache jemeter
Implement default page
MySQL - MySQL查询语句的执行过程
C language self compiled string processing function - string segmentation, string filling, etc
VMware Workstation cannot connect to the virtual machine. The system cannot find the specified file
Using JSON server to create server requests locally
随机推荐
Metalife established a strategic partnership with ESTV and appointed its CEO Eric Yoon as a consultant
撿起MATLAB的第(9)天
Homewbrew installation, common commands and installation path
【现代电子装联期末复习要点】
Simple usage of dlopen / dlsym / dlclose
捡起MATLAB的第(9)天
Research and Practice on business system migration of a government cloud project
leetcode-396 旋转函数
JMeter setting environment variable supports direct startup by entering JMeter in any terminal directory
Config learning notes component
299. 猜数字游戏
一文掌握vscode远程gdb调试
Application case of GPS Beidou high precision satellite time synchronization system
Change the icon size of PLSQL toolbar
Cloud migration practice in the financial industry Ping An financial cloud integrates hypermotion cloud migration solution to provide migration services for customers in the financial industry
Government cloud migration practice: Beiming digital division used hypermotion cloud migration products to implement the cloud migration project for a government unit, and completed the migration of n
运维流程有多重要,听说一年能省下200万?
How to conduct application security test (AST)
js正则判断域名或者IP的端口路径是否正确
JSP learning 3