用pygame做一个简单的python小游戏---生命游戏

用pygame做一个简单的python小游戏—生命游戏

生命游戏(Game of Life)

生命游戏(Game of Life)是剑桥大学约翰·何顿·康威(John Horton Conway)教授设计的一个计算机程序。这个计算机程序是因为它模拟和显示的图像看起来颇似生命的出生和繁衍过程而得名为“生命游戏”。同时生命游戏也是一个二维的元胞自动机。

生命游戏是一个二维网格游戏,这个网格中每个方格居住着一个活着或死了的细胞。一个细胞在下一个时刻的生死取决于相邻8个方格中活着或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因为孤单而死去。在游戏初始阶段,系统会随机产生一部分细胞。由这些初始细胞进行繁衍。

规则:

  • 若细胞为死亡状态,其周围若存在3个存活细胞,则繁衍后该细胞变成存活状态
  • 若细胞为存活状态,其周围若低于2个存活细胞,则繁衍后该细胞变成死亡状态
  • 若细胞为存活状态,其周围若存在2个或3个存活细胞,则繁衍后该细胞状态保持不变
  • 若细胞为存活状态,其周围若高于3个存活细胞,则繁衍后该细胞变成死亡状态

效果图展示:
在这里插入图片描述

附上代码:

import pygame, sys, time, random
width=102   #面板的宽度(外围有一层墙)
high=102  #面板的高度(外围有一层墙)
size=6   #设置绘制的单方格大小

def initialization(arr):   #初始化
    for i in range(high):
        for j in range(width):
            ran=random.random()
            if ran>0.9:
                arr[i][j]=1
            else:
                pass
    return arr

def nextmultiply(arr):    #下一代繁衍
    newarr = [([0] * width) for n in range(high)]
    for i in range(high):
        for j in range(width):
            num=0
            if (i==0 or i==high-1) or (j==0 or j==width-1):
                newarr[i][j]=0
            else:
                num=arr[i-1][j-1]+arr[i-1][j]+arr[i-1][j+1]+arr[i][j-1]+arr[i][j+1]+arr[i+1][j-1]+arr[i+1][j]+arr[i+1][j+1]
                if arr[i][j]==0:  #若原细胞为死亡状态
                    if num==3:
                        newarr[i][j]=1
                else:    #若原细胞为存活状态
                    if num==2 or num==3:
                        newarr[i][j]=1
                    else:
                        newarr[i][j]=0
    return newarr



if __name__ == '__main__':
    color_white = pygame.Color(255, 255, 255)
    color_LightSkyBlue = pygame.Color(135,206,250)
    color_black = pygame.Color(0, 0, 0)
    pygame.init()
    screen = pygame.display.set_mode((width*size, high*size))
    screen.fill(color_white)
    pygame.display.set_caption("生命游戏Game of Life")
    arr = [([0] * width) for i in range(high)]  # 创建一个二维数组
    arr=initialization(arr)
    while(True):
        screen.fill(color_white)
        time.sleep(0.5)
        for i in range(high):
            for j in range(width):
                if arr[i][j]==1:
                    pygame.draw.rect(screen, color_black, (i * size, j * size, size, size))
                elif (i==0 or i==high-1) or (j==0 or j==width-1):
                    pygame.draw.rect(screen, color_LightSkyBlue, (i * size, j * size, size, size))
                else:
                    pass
        for event in pygame.event.get():  # 监听器
            if event.type == pygame.QUIT:
                sys.exit()
        arr = nextmultiply(arr)
        pygame.display.update()
  • 17
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
当然可以!下面是一个使用 Pygame 编写的简单回合制小游戏的示例代码: ```python import pygame import random # 游戏初始化 pygame.init() # 设置屏幕尺寸 screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("回合制小游戏") # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) # 定义角色类 class Character(pygame.sprite.Sprite): def __init__(self, name): super().__init__() self.name = name self.max_health = 100 self.current_health = self.max_health self.attack_damage = random.randint(5, 15) self.image = pygame.Surface([50, 50]) self.image.fill(WHITE) self.rect = self.image.get_rect() def attack(self, target): target.current_health -= self.attack_damage def update(self): if self.current_health <= 0: self.kill() # 创建角色精灵组 all_characters = pygame.sprite.Group() # 创建角色实例 player = Character("玩家") enemy = Character("敌人") # 将角色添加到精灵组 all_characters.add(player) all_characters.add(enemy) # 游戏主循环 running = True clock = pygame.time.Clock() while running: # 检查事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 清除屏幕 screen.fill(BLACK) # 更新角色状态 all_characters.update() # 绘制角色 all_characters.draw(screen) # 刷新屏幕 pygame.display.flip() # 控制帧率 clock.tick(30) # 游戏结束 pygame.quit() ``` 这个示例代码创建了一个简单的回合制小游戏,其中有一个玩家角色和一个敌人角色。玩家和敌人都有一定的生命值和攻击力,每个回合玩家会攻击敌人,然后敌人会攻击玩家,直到其中一个角色的生命值归零为止。 你可以根据自己的需求修改代码,并添加其他功能、图像和音效等来使游戏更有趣。祝你编写游戏的过程愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值