Python 生命游戏(tkinter版)

Python实现生命游戏_定义小游戏任务生命值最大为初始值python(1) 我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。 阅读详情
AI摘要

本文介绍了康威的生命游戏,包括其生存定律、图形结构变化和Python代码实现。通过Tkinter展示动态演化,涵盖不动点、周期变化和复杂形态。

生命游戏(Game of Life)

由剑桥大学约翰·何顿·康威设计的计算机程序。美国趣味数学大师马丁·加德纳(Martin Gardner,1914-2010)通过《科学美国人》杂志,将康威的生命游戏介绍给学术界之外的广大渎者,一时吸引了各行各业一大批人的兴趣,这时细胞自动机课题才吸引了科学家的注意。

游戏概述

用一个二维表格表示“生存空间”,空间的每个方格中都可放置一个生命细胞,每个生命细胞只有两种状态:“生”或“死”。用绿色方格表示该细胞为“生”,空格(白色)表示该细胞为“死”。或者说方格网中绿色部分表示某个时候某种“生命”的分布图。生命游戏想要模拟的是:随着时间的流逝,这个分布图将如何一代一代地变化。死亡太沉重,我想称它为“湮灭”状态。

生存定律

生存空间的每个方格都存在一个细胞,它的周边紧邻的8个方格上的称为邻居细胞。
(1)当前细胞为湮灭状态时,当周围有3个存活细胞时,则迭代后该细胞变成存活状态(模拟繁殖)。
(2)当前细胞为存活状态时,当周围的邻居细胞少于2个存活时,该细胞变成湮灭状态(数量稀少)。
(3)当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成湮灭状态(数量过多)。
(4)当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。

简单来说,活细胞Cell看作是‘1’,死Cell看作‘0’,8个邻居的累加和Sum决定了下一轮的状态:

“繁殖”:死Cell=0,若Sum=3,则Cell=1。
“稀少”:活Cell=1,若Sum<2,则Cell=0。
“过多”:活Cell=1,若Sum>3,则Cell=0。
“正常”:活Cell=1,若Sum=2或3,则Cell=1。

生存空间中生命的繁殖和湮灭,如下图所示:

图形结构

在游戏进行中,杂乱无序的细胞会逐渐演化出各种精致、有形的图形结构;这些结构往往有很好的对称性,而且每一代都在变化形状。一些形状一经锁定就不会逐代变化。有时,一些已经成形的结构会因为一些无序细胞的“入侵”而被破坏。但是形状和秩序经常能从杂乱中产生出来。

通常会有以下四种状态:

不动点(fixed points):变化终结于恒定图像
交替态(alternation):图像出现周期性变化
随机态(randomness):图像变化近乎随机
复杂态(complexity):图像存在某种复杂规律

常见的不动结构:

周期变化的结构:

逐步趋向湮灭的结构:


由一根10个连续细胞演化出来的周期结构:


动态变化后全部湮灭的结构:


移动的飞船:周期变化且逐渐向右平移

飞船到了边界变成向对角线移动的“滑翔者”,滑翔者到了边界成为不动的方块。

更多有趣的图形结构有待发现,用代码来辅助这项工作还是比较方便的.....


代码实现

用tkinter库实现了软件界面,画布、按钮、标签等控件都是配角,全是为表现生命繁殖演化的核心代码类方法 Lifes.reproduce() 作帮手的,源代码lifegame.pyw如下:

from tkinter import messagebox as msgbox
import tkinter as tk
import webbrowser
import random

class Lifes:
    def __init__(self, rows=36, cols=36):
        self.row = rows+2
        self.col = cols+2
        self.items = [[0]*self.col for _ in range(self.row)]
        self.histroy = []
        self.histroySize = 30
        self.running = False
        self.runningSpeed = 100
        
    def rndinit(self, rate=0.1):
        self.histroy = []
        for i in range(self.row):
            for j in range(self.col):
                rnd = random.random()
                if rnd > 1-rate:
                    self.items[i][j]=1

    def reproduce(self):
        new = [[0]*self.col for _ in range(self.row)]
        self.add_histroy()
        if len(self.histroy) > self.histroySize:
            self.histroy.pop(0)
        for i in range(self.row):
            for j in range(self.col):
                if i*j==0 or i==self.row-1 or j==self.col-1:
                    new[i][j]=0
                else:
                    lifes=0
                    for m in range(i-1,i+2):
                        for n in range(j-1,j+2):
                            if m==i and n==j:
                                continue
                            lifes += self.items[m][n]
                    if self.items[i][j]:
                        if lifes==2 or lifes==3:
                            new[i][j]=1
                        else:
                            new[i][j]=0
                    else:
                        if lifes==3:
                            new[i][j]=1
        for idx,narray in enumerate(new):
            self.items[idx] = narray

    def is_stable(self):
        if len(self.histroy)<self.histroySize:
            return False
        arr = []
        for i in self.histroy:
            if i not in arr:
                arr.append(i)
        if len(arr)<10:
            return True

    def add_histroy(self, Items=None):
        arr = []
        if Items==None:
            Items=self.items[:]
        for item in Items:
            b = 0
            for i,n in enumerate(item[::-1]):
                b += n*2**i
            arr.append(b)
        self.histroy.append(arr)


def drawCanvas():
    global tv,rect
    tv = tk.Canvas(win, width=win.winfo_width(), height=win.winfo_height())
    tv.pack(side = "top")
    for i in range(36):
        coord = 40, 40, 760, i*20 + 40
        tv.create_rectangle(coord)
        coord = 40, 40, i*20 + 40, 760
        tv.create_rectangle(coord)
    coord = 38, 38, 760, 760
    tv.create_rectangle(coord,width=2)
    coord = 39, 39, 760, 760
    tv.create_rectangle(coord,width=2)
    coord = 38, 38, 762, 762
    tv.create_rectangle(coord,width=2)
    R,XY = 8,[50+i*20 for i in range(36)]
    rect = [[0]*36 for _ in range(36)]
    for i,x in enumerate(XY):
        for j,y in enumerate(XY):
            rect[i][j] = tv.create_rectangle(x-R,y-R,x+R,y+R,tags=('imgButton1'))
            tv.itemconfig(rect[i][j],fill='lightgray',outline='lightgray')
    tv.tag_bind('imgButton1','<Button-1>',on_Click)

def drawLifes():
    R,XY = 8,[50+i*20 for i in range(36)]
    if Life.running:
        for i,x in enumerate(XY):
            for j,y in enumerate(XY):
                if Life.items[i+1][j+1]:
                    tv.itemconfig(rect[i][j],fill='green',outline='green')
                else:
                    tv.itemconfig(rect[i][j],fill='lightgray',outline='lightgray')
        tv.update()
        Life.reproduce()
        if Life.is_stable():
            Life.running = False
            if sum(sum(Life.items,[])):
                msgbox.showinfo('Message','生命繁殖与湮灭进入稳定状态!!!')
            else:
                msgbox.showinfo('Message','生命全部湮灭,进入死亡状态!!!')
    win.after(Life.runningSpeed, drawLifes)

def StartLife():
    if sum(sum(Life.items,[])):
        Life.histroy = []
        Life.running = True
    else:
        msgbox.showinfo('Message','请点击小方块填入生命细胞,或者使用随机功能!')

def BreakLife():
    Life.running = not Life.running
    if Life.running:
        Life.histroy.clear()
        Life.add_histroy()

def RandomLife():
    Life.rndinit()
    Life.running = True

def ClearLife():
    Life.running = False
    Life.histroy = []
    Life.items = [[0]*38 for _ in range(38)]
    for x in range(36):
        for y in range(36):
            tv.itemconfig(rect[x][y],fill='lightgray',outline='lightgray')

def btnCommand(i):
    if   i==0: return StartLife
    elif i==1: return BreakLife
    elif i==2: return RandomLife
    elif i==3: return ClearLife

def on_Enter(event):
    tCanvas.itemconfig(tVisit, fill='magenta')

def on_Leave(event):
    tCanvas.itemconfig(tVisit, fill='blue')

def on_Release(event):
    url = 'https://blog.youkuaiyun.com/boysoft2002?type=blog'
    webbrowser.open(url, new=0, autoraise=True)

def on_Click(event):
    x,y = (event.x-40)//20,(event.y-40)//20
    if not Life.running:
        if Life.items[x+1][y+1]:
            tv.itemconfig(rect[x][y],fill='lightgray',outline='lightgray')
        else:
            tv.itemconfig(rect[x][y],fill='red',outline='red')
        Life.items[x+1][y+1] = not Life.items[x+1][y+1]

def on_Close():
    if msgbox.askokcancel("Quit","Do you want to quit?"):
        Life.running = False
        print(Copyright())
        win.destroy()

def Introduce():
    txt = '''【生命游戏】\n\n生存定律:
    (1)当前细胞为湮灭状态时,当周围有3个存活细胞时,则迭代后该细胞变成存活状态(模拟繁殖)。
    (2)当前细胞为存活状态时,当周围的邻居细胞少于2个存活时,该细胞变成湮灭状态(数量稀少)。
    (3)当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成湮灭状态(数量过多)。
    (4)当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。'''
    return txt

def Copyright():
    return 'Lifes Game Ver1.0\nWritten by HannYang, 2022/08/01.'

if __name__ == '__main__':

    win = tk.Tk()
    X,Y = win.maxsize()
    W,H = 1024,800
    winPos = f'{W}x{H}+{(X-W)//2}+{(Y-H)//2}'
    win.geometry(winPos)
    win.resizable(False, False)
    win.title('生命游戏 Ver1.0')
    win.update()
    drawCanvas()
    Life = Lifes()
    drawLifes()

    tLabel = tk.Label(win, width=30, height=20, background='lightgray')
    tLabel.place(x=780, y=38)
    tLabel.config(text='\n\n\n'.join((Introduce(),Copyright())))
    tLabel.config(justify=tk.LEFT,anchor="nw",borderwidth=10,wraplength=210)

    tButton = [None]*4
    bX,bY,dY = 835, 458, 50
    txt = ['开始','暂停','随机','清空']
    for i in range(4):
        tButton[i] = tk.Button(win, text=txt[i], command=btnCommand(i))
        tButton[i].place(x=bX, y=bY+dY*i, width=120, height=40)     

    tCanvas = tk.Canvas(win, width=200, height=45)
    tCanvas.place(x=800,y=716)
    tVisit = tCanvas.create_text((88, 22), text=u"点此访问Hann's 优快云主页!")
    tCanvas.itemconfig(tVisit, fill='blue', tags=('btnText'))
    tCanvas.tag_bind('btnText','<Enter>',on_Enter)
    tCanvas.tag_bind('btnText','<Leave>',on_Leave)
    tCanvas.tag_bind('btnText','<ButtonRelease-1>',on_Release)
    win.protocol("WM_DELETE_WINDOW", on_Close)
    win.mainloop()

编译命令

D:\> pyinstaller -F lifegame.pyw --noconsole

运行界面

使用简介

在生存空间里点击方格种植细胞(甚至可以画出你要表达的图形),然后点击开始;点下暂停键,则可以任意编辑生命图形,再点开始继续运行;点随机键则由软件随机生成细胞位置;清空键可以在任何时候清空生存空间,进入暂停编辑状态。 

后续改进

Lifes类预留了histroy属性,后续可以增加回退功能;代码缺点是生存空间的行列被我写死了,以后版本中可以改进成任意定义行列数;另一个缺点是对稳定状态的判断比较简单,之后可以增加计算变化周期的功能。

优点就是可以任意编辑你的图形,最后以一张自己的网名画的图作收尾:


前部分介绍性文字来源于百度百科等网络资源 

Python编写康威生命游戏算法及完整源代码 这个游戏中,每个细胞有两种状态:存活或死亡。细胞的状态受到它周围八个细胞状态的影响,按照特定的规则进行演化。下面将使用Python语言实现康威生命游戏算法,并提供完整的源代码。运行代码后,会展示出随机初始化的50x50大小的棋盘。每次点击右上角的“运行”按钮,都会计算并展示出下一代细胞的状态,形成动画效果。通过此代码,我们可以体验到康威生命游戏带来的趣味和神奇。同时,这个算法也是一个优秀的编程练手项目,可以帮助提高Python编程能力。参数的值,可以改变棋盘的大小。参数的值,可以改变动画效果的速度。 阅读详情

相关推荐

康威生命游戏:用Python实现经典的Game of Life

函数是动画的更新函数,它会根据康威生命游戏的规则来更新细胞的状态。在每一帧中,我们遍历游戏区域中的每个细胞,计算其周围存活细胞的数量,并根据规则更新细胞的状态。希望本文能够帮助你理解和实现康威生命游戏,并通过观察游戏的演化过程来感受细胞自动机的魅力。每个细胞的状态仅依赖于其周围细胞的状态,但整个系统的演化过程却呈现出了各种有趣的模式和行为。然后,我们需要创建一个初始的随机状态矩阵,其中每个细胞的状态都是随机的。接下来,我们需要初始化游戏区域的状态,并创建动画。函数来更新游戏区域的状态,并返回更新后的图像。

CyberGenius的博客 562

Python实现康威生命游戏

又称康威生命棋,是英国数学家在1970年发明的元胞自动机。可以用来模拟细胞的自然进化比较经典的一版游戏规则概述如下:1. 每个细胞的状态由该细胞及周围八个细胞上一次的状态所决定;2. 如果一个细胞周围有3个细胞为生,则该细胞由死转生或保持生;3. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;4. 在其它情况下,该细胞由生转死或保持死。

photon_123的博客 1911

用Python编写康威生命游戏

然后,我们定义了一个函数来计算每个细胞的下一个状态。这个函数会遍历整个网格,对于每个细胞统计周围八个格子中存活细胞的数量。根据规则,如果周围存活细胞的数量为2或3,则这个细胞会保持存活状态;这个游戏中有一个二维的网格世界,每个网格上的细胞可以存在或死亡,它们的生死状态取决于周围八个格子中存活细胞的数量。这个函数会循环计算每个时刻的细胞状态,并使用matplotlib.pyplot库将状态可视化出来。这个函数会生成一个随机的二维数组,其中每个元素都有50%的概率是1(存活)或0(死亡)。

带你成为别人眼中的大佬! 548

游戏是第一生产力!Python实现生命游戏的示例代码(tkinter版)

生命游戏(Game of Life)由剑桥大学约翰·何顿·康威设计的计算机程序。美国趣味数学大师马丁·加德纳(Martin Gardner,1914-2010)通过《科学美国人》杂志,将康威的生命游戏介绍给学术界之外的广大渎者,一时吸引了各行各业一大批人的兴趣,这时细胞自动机课题才吸引了科学家的注意。

2301_80239908的博客 2447

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本)

本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例和效果评估方法,适合GPR数据处理的研究人员和工程师参考。

weixin_29305313的博客 234

银河麒麟桌面操作系统V10(SP1)ssh服务安装与配置

在国产化的大背景下,各种国产操作系统逐步进入运维人员的视野,ssh作为linux远程连接工具,是运维人员必需的工具之一。本文主要介绍在银河麒麟桌面操作系统V10(SP1)上安装和配置ssh服务。

zhengshaolin128的博客 7813

使用 Python 编写生命游戏,导入 Tkinter 库和 random 库,实现随机生成初始状态,自定义初始状态,暂停和开始功能,用户可以自定义游戏规则...

可以使用 Tkinter 库和 random 库在 Python 中编写生命游戏。可以使用 random 库随机生成初始状态,并可以自定义初始状态。还可以实现暂停和开始功能,并允许用户自定义游戏规则。 ...

weixin_35752233的博客 248

基于DFT的mbist sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 926

Python+tkinter实现生命游戏(元胞自动机)

1.简介 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它最初于1970年10月在《科学美国人》杂志中马丁·葛登能(Martin Gardner,1914年11月21日-2010年5月22日。又译:马丁·加德纳)的“数学游戏”专栏出现。 2.原理 我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有NxN个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示白色,死则显示黑色。每一个格子旁边都有邻居格子存在,如果我们把3*3的9

羊驼挖坑日记 981

一步一步搭建S32K14x的AutoSar项目----MCAL工程创建及说明

一步一步搭建S32K14X的Autosar项目--MCAL工程创建及说明

wo580231的博客 2496

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 560

Python实现生命游戏

1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。 规则看起来很简单,但却能演绎出无穷无...

python学习者的博客 1413

[Dify实战]插件编写- 如何让插件直接输出文件对象(支持 TXT、Excel 等)

本文介绍了在Dify插件中实现文件对象返回的方法。通过create_blob_message()函数,开发者可以输出txt、Excel等格式文件,让用户直接下载而非复制文本。文章详细讲解了二进制文件生成的原理,提供了文本翻译和Excel报表生成的代码示例,并列出常见MIME类型对照表。这种技术能显著提升插件实用性,特别适用于翻译、报表生成等需要文件输出的场景,使交互体验从"复制粘贴"升级为"一键下载"。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1249

Python版《生命游戏+源码》

用一个二维表格表示“生存空间”,空间的每个方格中都可放置一个生命细胞,每个生命细胞只有两种状态:“生”或“死”。生命游戏程序--Conway's Game of Life,它的发展由其初始状态决定,不需要进一步的输入。msgbox.showinfo('Message', '生命已全部湮灭,进入死亡状态!今天的分享就到这里,希望感兴趣的同学关注我,每天都有新内容,不限题材,不限内容,你有想要分享的内容,也可以私聊我!一场生命的起源,衍生,到湮灭,经历多长时间,最后生命是战胜困难赢得了生存还是被环境所覆灭。

tao______tao的专栏 962

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 333

硬件测试实战笔记:SI/PI 到底测什么,怎么测?一文讲清

点选错了,数据越精确越误导。

qq_52293640的博客 263

从零开始学Python(6) -----在游戏中学习Python编程-编写”生命游戏”

上一次,我们尝试了用Tkinter的GUI库来编写简单的游戏。今天我们进一步编写一个稍微复杂的游戏吧。我们今天要编写的是一个叫“生命游戏”的模拟游戏。这个游戏虽然简单,但是看起来很有趣,大家可以尝试一下。 什么是生命游戏? 这是一款模拟英国生物群体兴衰的环境游戏,由英国数学家约翰·霍顿·康威(John Horton Conway)设计。 详细介绍请看百度百科生命游戏 实际的运行效果如下: ...

用技术改变生活 636

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python tkinter mainloop,如何在tkinter mainloop()中使用函数

我决定试试Python,到目前为止它还很有趣。然而,在和tkinter混在一起的时候,我遇到了一个几个小时都没能解决的问题。我读过一些东西,尝试过不同的东西,但都没用。到目前为止,我已经得到了代码,我认为程序应该可以正常运行。除了我不能让它循环从而自动更新。在所以我的问题是:如何以一种中缀循环方式调用带有tkinters循环选项的函数?简单的生活游戏:我基本上写了2节课。存储和处理单个单元格的矩阵...

weixin_39787057的博客 1041

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python小游戏开发——简单弹球游戏

撸码枯燥,扫码关注 案例介绍 本案例采用 python 实现了一个简单的弹球游戏。该游戏在一个单独的图形窗口中运行。游戏初始化后,在游戏窗口点击鼠标左键开始游戏。玩家通过控制键盘的左、右方向键来控制弹板的移动,弹球和弹板撞击一次,得一分,当弹球触底时,本局游戏结束。玩家一共有四条生命,即可以玩四次游戏,当生命大于等于“ 0 ”时,可以继续游戏,当生命小于“ 0 ”时,游戏结束。 学习目标 本案例...

springhammer的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

阿里资深Python开发,教你用10行Python代码玩转生命游戏

1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。 规则看起来很简单,但却能演绎出无穷无尽的内容。 滑翔者:每4个回合"它"会向右下角走一格。虽然细胞早就是不同的细胞了,但它能保持原本的形态。 轻量级

WhyLW的博客 590

python秒表游戏代码_阿里资深Python开发,教你用10行Python代码玩转生命游戏

1. 生命游戏是什么生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。规则看起来很简单,但却能演绎出无穷无尽的内容...

weixin_39955938的博客 208

Python康威生命游戏

康威生命游戏(Conway life game)

Frank_6_的博客 606

威康生命游戏

【代码】威康生命游戏。

weixin_44239683的博客 868

Small-Scale生命游戏实战:从规则解析到Python实现与坑点总结

元胞自动机是算法模拟领域的重要概念,而康威生命游戏正是其中最经典的模型之一。它通过简单的生死规则演化出复杂行为,广泛应用于教学演示、算法训练和复杂系统研究。实现生命游戏时,需要深入理解同步更新、边界策略、数据结构选型等基础原理,这些都是计算机科学中的核心知识与工程实践要点。本文从零构建一个Small-Scale版的生命游戏,采用Python实现,结合Tkinter进行可视化展示,并重点剖析了环形边界、双缓冲机制、滑翔机等经典图案的加载,以及开发过程中遇到的典型坑点。通过这个微型项目,读者可以掌握状态模拟的基

weixin_30247781的博客 715

【Dison夏令营 Day 15】 Python 鸡蛋捕手

在本次课程中,我们使用 Python 创建了经典的 "抓蛋 "游戏。在这个游戏中,每抓到一个鸡蛋就能赢得 10 分,而每掉落一个鸡蛋就会损失一条命。小时候,我们都玩过 "抓鸡蛋 "游戏。我们使用海龟软件包在 Python 中实现了这个游戏。在这个抓蛋游戏中,您必须用一个篮子抓住掉落在屏幕上的鸡蛋,这将考验您的注意力和反应能力。要设计一个鸡蛋捕手游戏,您需要创建一个动画,显示鸡蛋随机掉落的位置和一个篮子将鸡蛋全部接住的过程。构建地板、篮子和鸡蛋是用 Python 创建鸡蛋捕手游戏的第一步。

weixin_41446370的博客 1340

python 生命游戏

【代码】python 生命游戏。

csdn_wql_的博客 993
上一篇: Python少儿编程提高篇(4)集合
下一篇: Go语言 rand(随机数)包
Hann Yang
Hann Yang 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄19年 4万+粉丝 1041原创
评论 45
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hann Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值