IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Pygame小游戏】这款“吃掉一切”游戏简直奇葩了?通通都吃掉嘛?(附源码免费领) -> 正文阅读

[Python知识库]【Pygame小游戏】这款“吃掉一切”游戏简直奇葩了?通通都吃掉嘛?(附源码免费领)

前言?

嗨!我是栗子同学。很久不见甚是思念!我回来啦~

今天给大家写点儿什么呢?!嘿嘿,其实这么久没写代码啦,手都不会打字了,代码都不会敲

了,容我慢慢道来!先来点儿简单的吧(其实是没思路,上次写剩下的一个无敌狙击手的游戏

代码小小的改编了一下下,偷懒了哈,因为不知道写啥了,不要打我.jpg)

等我灵感了就好好给大家写,先练练手哈!有爱的源码,可以评论下下次说不定就写了撒!

今天教大家写一款简单的小游戏:《吃掉一切》让我们马上开始叭👇

所有文章完整的素材+源码都在👇👇文末公众hao自取哦!

?

正文

本文是基于pygame写的一款界面简单的小游戏哈!

一、运行环境

?1)环境安装👇 Python3、 Pycharm 、tkinter、Pygame模块部分自带模块就不展示啦。

(如需安装包、激活码等直接 私信我即可安装问题解答都可以的哈~)

第三方库的安装:pip install pygame 或者 带镜像源 pip install -i

https://pypi.douban.com/simple/ +模块名

2)素材(图片:食物跟吃东西的人)

感觉食物跟人美少女不是很配来着,哈哈哈,将就一下叭,大家可以更换图片的啦!

二、主程序

?import pygame,os,random
from pygame.locals import *
from pygame.sprite import *
def load_image(name):
    fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name)
    image=pygame.image.load(fullname)
    return image
def load_sound(name):
    fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name)
    sound=pygame.mixer.Sound(fullname)
    return sound
class Tip(Sprite):
    def __init__(self,screen,fontrender,waitticks,pos):
        super(Tip,self).__init__()
        self.screen=screen
        self.image=fontrender
        self.rect=self.image.get_rect()
        self.rates=0
        self.waitticks=waitticks
        self.rect.center=pos
    def update(self):
        self.rates+=1
        if self.rates>=self.waitticks:
            self.kill()
class Surface:
    def __init__(self,screen):
        self.screen=screen
        self.image=load_image("eatingface.png")
        self.rect=self.image.get_rect()
        self.rect.center=self.screen.get_rect().center
        self.speed=3.7
        self.caneat=20
        self.eat=self.caneat
        self.moveUp=False
        self.moveDown=False
        self.moveLeft=False
        self.moveRight=False
        self.faceatleft=False
        self.punch=0
    def update(self):
        if self.punch==0:
            if self.moveUp and self.rect.top>0:
                self.rect.centery-=self.speed
            if self.moveDown and self.rect.bottom<HEIGHT:
                self.rect.centery+=self.speed
            if self.moveLeft and self.rect.left>0:
                if not self.faceatleft:
                    self.faceatleft=True
                    self.image=pygame.transform.flip(self.image,True,False)
                self.rect.centerx-=self.speed
            if self.moveRight and self.rect.right<WIDTH:
                if self.faceatleft:
                    self.faceatleft=False
                    self.image=pygame.transform.flip(self.image,True,False)
                self.rect.centerx+=self.speed
        else:
            self.punched()
    def blit(self):
        self.screen.blit(self.image,self.rect)
    def punched(self):
        self.punch+=1
        if self.punch>60:
            self.punch=0
    def eats(self,num):
        self.eat+=num
        if self.eat>=100:
            self.eat=100
            return "True"
        elif self.eat<=0:
            self.eat=0
            return "False"
        return "None"
    def reset(self):
        self.image=load_image("eatingface.png")
        self.rect=self.image.get_rect()
        self.rect.center=self.screen.get_rect().center
        self.speed=3.7
        self.eat=self.caneat
        self.moveUp=False
        self.moveDown=False
        self.moveLeft=False
        self.moveRight=False
        self.faceatleft=False
        self.punch=0
class Food(Sprite):
    def __init__(self,screen,surface,tips,gameFont):
        super(Food,self).__init__()
        self.screen=screen
        self.surface=surface
        self.tips=tips
        self.gameFont=gameFont
        self.screenrect=self.screen.get_rect()
        self.image=load_image("eatingfood.png")
        self.rect=self.image.get_rect()
        self.rectat=random.choice(["top","left","right","bottom"])
        self.xspeed=round(random.uniform(1,2),2)
        self.yspeed=round(random.uniform(1,2),2)
        if self.rectat=="top":
            self.rect.center=(random.randint(0,WIDTH),0)
        elif self.rectat=="bottom":
            self.rect.center=(random.randint(0,WIDTH),HEIGHT)
            self.yspeed=-self.yspeed
        elif self.rectat=="left":
            self.rect.center=(0,random.randint(0,HEIGHT))
        elif self.rectat=="right":
            self.xspeed=-self.xspeed
            self.rect.center=(WIDTH,random.randint(0,HEIGHT))
    def update(self):
        global toohungry,isfull
        if self.surface.faceatleft:
            if self.rect.left<self.surface.rect.left<=self.rect.right:
                if self.surface.rect.top<self.rect.top<self.surface.rect.bottom or self.surface.rect.bottom>self.rect.bottom>self.surface.rect.top:
                    self.kill()
                    if self.surface.eats(2)=="True":
                        isfull=True
                    return
        else:
            if self.rect.right>self.surface.rect.right>=self.rect.left:
                if self.surface.rect.top<self.rect.top<self.surface.rect.bottom or self.surface.rect.bottom>self.rect.bottom>self.surface.rect.top:
                    self.kill()
                    if self.surface.eats(2)=="True":
                        isfull=True
                    return
        if collide_rect(self,self.surface):
            self.surface.punched()
            if self.surface.eats(-1)=="False":
                toohungry=True
                return
            self.tips.add(Tip(self.screen,self.gameFont.render("Dizzy!",True,(255,255,255)),
                              60,self.surface.rect.center))
            self.away()
        self.rect.centerx+=self.xspeed
        self.rect.centery+=self.yspeed
        if self.rect.top>self.screenrect.height or self.rect.bottom<0:
            self.kill()
        elif self.rect.left>self.screenrect.width or self.rect.right<0:
            self.kill()
    def away(self):
        self.xspeed=-self.xspeed
        self.yspeed=-self.yspeed
WIDTH=700
HEIGHT=600
toohungry=False
isfull=False
def initmain():
    pygame.init()
    screen=pygame.display.set_mode((WIDTH,HEIGHT))
    pygame.display.set_caption("Eater")
    gameFont=pygame.font.SysFont("宋体",26,True)
    fpstime=pygame.time.Clock()
    surface=Surface(screen)
    foods=Group()
    tips=Group()
    def mainit():
        global toohungry,isfull
        foods.empty()
        tips.empty()
        surface.reset()
        rates=0
        toohungry=False
        isfull=False
        while ((not isfull) and (not toohungry)):
            fpstime.tick(100)
            screen.fill((0,255,0))
            screen.blit(gameFont.render("Full "+str(surface.eat)+"%",True,(0,0,0)),(2,2))
            rates+=1
            if rates%50==0:
                foods.add(Food(screen,surface,tips,gameFont))
            foods.draw(screen)
            foods.update()
            surface.blit()
            surface.update()
            tips.draw(screen)
            tips.update()
            for event in pygame.event.get():
                if event.type==QUIT:
                    toohungry=True
                    isfull=True
                elif event.type==KEYDOWN:
                    if event.key==K_RIGHT:
                        surface.moveRight=True
                    elif event.key==K_LEFT:
                        surface.moveLeft=True
                    elif event.key==K_UP:
                        surface.moveUp=True
                    elif event.key==K_DOWN:
                        surface.moveDown=True
                    elif event.key==K_SPACE:
                        surface.speed=5
                elif event.type==KEYUP:
                    if event.key==K_RIGHT:
                        surface.moveRight=False
                    elif event.key==K_LEFT:
                        surface.moveLeft=False
                    elif event.key==K_UP:
                        surface.moveUp=False
                    elif event.key==K_DOWN:
                        surface.moveDown=False
                    elif event.key==K_SPACE:
                        surface.speed=3.5
            pygame.display.flip()
        notbreak=True
        while notbreak:
            screen.fill((0,255,0))
            if toohungry and isfull:
                screen.blit(gameFont.render("Esc To Exit!",True,(128,128,128)),(2,2))
            elif toohungry:
                screen.blit(gameFont.render("Too hungry!",True,(0,0,0)),(2,2))
            elif isfull:
                screen.blit(gameFont.render("Full!",True,(0,0,0)),(2,2))
            screen.blit(gameFont.render("Space To Retry",True,(128,128,128)),(2,32))
            for event in pygame.event.get():
                if event.type==QUIT:
                    pygame.quit()
                    __import__("sys").exit()
                elif event.type==KEYUP:
                    if event.key==K_ESCAPE:
                        pygame.quit()
                        __import__("sys").exit()
                    elif event.key==K_SPACE:
                        notbreak=False
            pygame.display.flip()
        mainit()
    mainit()
if __name__=="__main__":
    initmain()

总结

嗨,效果挺简单滴啦,我就不展示了就一张图,鼠标左键一直移动吃掉掉落的食物即可啦!

💖?免费的??源码基地——

私信小编06或者点击这行蓝色字体即可免费获取哈!

你们的支持是我最大的动力!!记得三连哦~mua?欢迎大家阅读往期的文章哦~

🎉往期部分文章推荐——

项目1.5?Pygame小游戏:植物大战僵尸游戏真的有“毒”?戒不掉啊~

项目1.6?【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~

项目1.7?【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~

项目3.1?【Pygame实战】如果你是赛车爱好者:这款新赛车游戏分分钟让你上瘾(超跑又是谁的梦想?)

项目3.2?【Pygame小游戏】炸裂全场、超级炸弹人“爆炸”登场,这是你的童年嘛?

🎄文章汇总——

项目1.0?Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在文章汇总哦!!欢迎阅读~)

🎁文章汇总——

汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:03:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 6:55:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码