婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python實戰之實現康威生命游戲

Python實戰之實現康威生命游戲

熱門標簽:地圖制圖標注位置改變是移位嗎 地圖標注微信發送位置不顯示 房產電銷外呼系統 蓋州市地圖標注 浙江電銷卡外呼系統好用嗎 地圖標注的意義點 南京銷售外呼系統軟件 315電話機器人廣告 上海機器人外呼系統哪家好

前言

康威生命游戲設計并不難,我的思路就是借助pygame進行外觀的展示,最近一段時間的游戲項目都是使用pygame進行的,做起來比較順利。內部代碼的實現也比較簡單根據他的規則我們需要的是多次的計算和判斷,再刷新數組。

一、康威生命游戲規則

當周圍僅有1個或沒有存活細胞時, 原來的存活細胞進入死亡狀態。(模擬生命數量稀少)當周圍有2個或3個存活細胞時, 網格保持原樣。當周圍有4個及以上存活細胞時,原來的存活細胞亦進入死亡狀態。(模擬生命數量過多)當周圍有3個存活細胞時,空白網格變成存活細胞。(模擬繁殖)

二、設計流程

1. 引入庫

代碼如下(示例):

import sys
import random
import numpy as np
import pygame

2. 設計思路

在這篇博客里面我們實現了下面第一個圖的內容。

感興趣的朋友也可以加下面的思路:

3. 設計窗口

首先我們借用了之前的pygame窗口的代碼,實現窗口的調用。與之前有所不同的變化是,我們在展開窗口之前首先確定大小。
我們實現了游戲大小的自定義,窗口大小的自定義,可以與后面游戲設計增加統一性,增加美觀性。

中間的部分代碼是一些顏色的調出,和窗口的填充。

import sys
import random
import numpy as np
import pygame
pygame.init()#初始化init()及設置
n=int(input("請輸入階數:"))
size=width,height=50*n+2,50*n+2
screen=pygame.display.set_mode(size)#窗口大小
pygame.display.set_caption("康威生命游戲")#窗口名字
icon=pygame.image.load("Icon.jpg")
pygame.display.set_icon(icon)
BLACK=pygame.Color("black")
GAINSBORO=pygame.Color("gainsboro")
MOCCASIN=pygame.Color("moccasin")
WHITE=pygame.Color("white")
screen.fill(MOCCASIN)
fps=5
fclock=pygame.time.Clock()#創建一個Clock對象用于操作時間

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:  # 點擊了退出
            sys.exit()  # 退出

    pygame.display.update()  # 對顯示窗口進行更新,默認窗口全部重繪
    fclock.tick(fps)  # 窗口刷新速度,每秒3次

三、初始生命矩陣

我們通過循環產生隨機數來產生隨機的初始生命。

random.randint(a,b):產生一個位于a-b之間的隨機整數,包括a,b。

## 生成初始生命
a=[]
for i in range(0,n):
    a.append([])
    for j in range(0,n):
        a[i].append(random.randint(0,1))

四、周圍生命的檢測

我們將生命周圍八個位置的索引差值存放在一個列表中,通過循環檢測有效位置上生命的個數,存放入列表中。
包含兩個判斷。

1.首先要判斷位置的有效性

2.另一個是判斷是否有生命

direction = [[-1, -1], [0, -1], [1, -1], [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0]]
    c = []
    # 計算周圍生命個數
    for i in range(0, n):
        c.append([])
        for j in range(0, n):
            count = 0   # 每一個方格
            for o in direction:
                ide = np.array([i, j]) + np.array(o)
                # 保證判斷的位置在范圍內,針對邊界方格
                if 0 = ide[0]  n and 0 = ide[1]  n:
                    if a[ide[0]][ide[1]] == 1:
                        count += 1
            c[i].append(count)

五、生命的變化

將每個位置上的生命根據計數列表進行更新,更新生命矩陣。

## 按照生命的發展規律進行新一輪的生面變化
    for i in range(0, n):
        for j in range(0, n):
            if c[i][j] = 1 or c[i][j] >= 4:#當生命稀少或者過多時生命死亡
                a[i][j] = 0
            elif c[i][j] == 3:#當生命的周圍有三個生命時,生成新生命
                a[i][j] = 1

六、生命的展示

畫出生命的方格很簡單,我們調用pygame的繪制圖形代碼:

pygame.draw.rect(screen, BLACK, (i*50, j*50, 50, 50)):這樣展示出來的是一個填充的矩形,展示在:screen上,初始位置為:(i * 50, j * 50),大小為:(50, 50),顏色為:black,默認邊框為0,即全部填充的矩形,當后面添加一個數字時,代表無填充,框線為數字大小的矩形,如:pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)代表不填充,框線為2

通過畫圖重疊,我們實現每個生命之間的間隔的樣式,增強渲染效果。

for i in range(0, n):
        for j in range(0, n):
            if a[i][j]==1:
                #先畫一個滿填充的方格,有生命方格
                pygame.draw.rect(screen, BLACK, (i*50, j*50, 50, 50))
                #再畫一個不填充,框線為2的方格,套在上面的方格上面
                pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)

            else:#無生命方格
                pygame.draw.rect(screen, WHITE, (i*50, j*50, 50, 50))
                pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)

七、完整代碼

"""
# -*- coding: utf-8 -*-
# @Time    : 2021/4/23 0023 17:14
# @Author  : 源來很巧
# @FileName: 康威生命游戲2.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/qq_44793283
"""
import sys
import random
import numpy as np
import pygame
pygame.init()#初始化init()及設置
n=int(input("請輸入階數:"))
size=width,height=50*n+2,50*n+2
screen=pygame.display.set_mode(size)#窗口大小
pygame.display.set_caption("康威生命游戲")#窗口名字
icon=pygame.image.load("Icon.jpg")
pygame.display.set_icon(icon)
BLACK=pygame.Color("black")
GAINSBORO=pygame.Color("gainsboro")
MOCCASIN=pygame.Color("moccasin")
WHITE=pygame.Color("white")
screen.fill(MOCCASIN)
fps=1
fclock=pygame.time.Clock()#創建一個Clock對象用于操作時間


## 生成初始生命
a=[]
for i in range(0,n):
    a.append([])
    for j in range(0,n):
        a[i].append(random.randint(0,1))

## 八個方位的索引變化
direction = [[-1, -1], [0, -1], [1, -1], [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0]]
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:  # 點擊了退出
            sys.exit()  # 退出
    c = []
    # 計算周圍生命個數
    for i in range(0, n):
        c.append([])
        for j in range(0, n):
            count = 0   # 每一個方格
            for o in direction:
                ide = np.array([i, j]) + np.array(o)
                # 保證判斷的位置在范圍內,針對邊界方格
                if 0 = ide[0]  n and 0 = ide[1]  n:
                    if a[ide[0]][ide[1]] == 1:
                        count += 1
            c[i].append(count)
    ## 按照生命的發展規律進行新一輪的生面變化
    for i in range(0, n):
        for j in range(0, n):
            if c[i][j] = 1 or c[i][j] >= 4:#當生命稀少或者過多時生命死亡
                a[i][j] = 0
            elif c[i][j] == 3:#當生命的周圍有三個生命時,生成新生命
                a[i][j] = 1
    for i in range(0, n):
        for j in range(0, n):
            if a[i][j]==1:
                #先畫一個滿填充的方格,有生命方格
                pygame.draw.rect(screen, BLACK, (i*50, j*50, 50, 50))
                #再畫一個不填充,框線為2的方格,套在上面的方格上面
                pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)

            else:#無生命方格
                pygame.draw.rect(screen, WHITE, (i*50, j*50, 50, 50))
                pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)
    print(np.array(a))
    pygame.display.update()  # 對顯示窗口進行更新,默認窗口全部重繪
    fclock.tick(fps)  # 窗口刷新速度,每秒3次

總結

這個游戲的實際設計并不是很困難,我們需要將具體的思路理順,哪一步首先進行,需要我們準備哪些存儲的矩陣等等。唯一的彎路是周圍生命個數的檢測,我的方法是窮舉法,將每個位置索引只差手動計算存儲起來。在小的計算量下,這層循環計算并不會浪費很多時間,如果您對此有好的建議歡迎交流。也歡迎對后面的游戲結束進行交流,后續我可以補上結束游戲的方法。

到此這篇關于Python實戰之實現康威生命游戲的文章就介紹到這了,更多相關Python實現康威生命游戲內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python pygame 憤怒的小鳥游戲示例代碼
  • 只需要100行Python代碼就可以實現的貪吃蛇小游戲
  • python編寫五子棋游戲
  • 學會用Python實現滑雪小游戲,再也不用去北海道啦
  • 教你用Python實現一個輪盤抽獎小游戲
  • python實戰之利用pygame實現貪吃蛇游戲(二)
  • python實現21點小游戲
  • 教你用Python寫一個植物大戰僵尸小游戲
  • 憶童年!用Python實現憤怒的小鳥游戲

標簽:金華 克拉瑪依 臨汾 日照 赤峰 陽泉 雙鴨山 貴州

巨人網絡通訊聲明:本文標題《Python實戰之實現康威生命游戲》,本文關鍵詞  Python,實戰,之,實現,康威,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實戰之實現康威生命游戲》相關的同類信息!
  • 本頁收集關于Python實戰之實現康威生命游戲的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品免费专区| 欧美精品第1页| 欧美视频一区二区三区| 91麻豆精品国产91| 亚洲福利视频一区二区| 国产精品小仙女| 中文字幕成人网| 91在线精品一区二区| 国产不卡在线播放| 九一久久久久久| 精品综合免费视频观看| 青青草国产精品亚洲专区无| 亚洲国产一区二区在线播放| 亚洲精品成人精品456| 国产精品国产三级国产aⅴ入口| 2023国产精品| 精品久久久久久亚洲综合网| 91精品国产高清一区二区三区 | 色综合中文字幕| kk眼镜猥琐国模调教系列一区二区 | 亚洲免费观看高清完整版在线观看熊 | eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 韩国成人福利片在线播放| 日韩精品一区二区三区中文不卡| 中文av一区特黄| 91视频你懂的| 中文字幕人成不卡一区| 精品久久久久av影院 | 色欲综合视频天天天| 日韩精品一级中文字幕精品视频免费观看 | 欧美日本在线看| 中文字幕制服丝袜一区二区三区| 成人av网在线| 石原莉奈一区二区三区在线观看| 69堂成人精品免费视频| 国产精品一区免费在线观看| 久久久噜噜噜久久人人看| 国产69精品一区二区亚洲孕妇| 亚洲欧美日韩久久精品| 欧美一区二区三区男人的天堂| 成人黄色国产精品网站大全在线免费观看| 亚洲视频中文字幕| 久久久久青草大香线综合精品| 久久久激情视频| 国产一区二区在线观看免费 | 在线一区二区视频| 久久综合五月天婷婷伊人| 国v精品久久久网| 国产欧美1区2区3区| 欧美中文字幕一区二区三区亚洲| 亚洲欧洲另类国产综合| 久久精品国产精品青草| 洋洋成人永久网站入口| 精品国内二区三区| 99视频在线观看一区三区| 亚洲女性喷水在线观看一区| 久久久高清一区二区三区| 一本在线高清不卡dvd| 成人午夜电影小说| 久久精品久久99精品久久| 亚洲欧美国产高清| 波多野结衣中文字幕一区二区三区| 北条麻妃国产九九精品视频| 日韩欧美精品在线| caoporn国产一区二区| 国产精品原创巨作av| 免费人成在线不卡| 日韩精品一二三| 亚洲国产精品一区二区尤物区| 亚洲精品乱码久久久久久久久| 国产精品国产三级国产普通话99| 欧美猛男gaygay网站| 国产在线精品不卡| 国产在线国偷精品免费看| 亚洲一级片在线观看| 国产欧美精品国产国产专区| 日韩精品中文字幕在线一区| 暴力调教一区二区三区| 成人av电影在线网| www.亚洲国产| 欧美日韩久久一区| 欧美成人精品福利| 综合久久一区二区三区| 亚洲综合一二区| 韩国毛片一区二区三区| 91看片淫黄大片一级在线观看| 欧美三级视频在线观看| 国产日韩高清在线| 亚洲精品中文字幕乱码三区| 老司机免费视频一区二区三区| 成人一区二区三区视频| 色94色欧美sute亚洲线路一久| 欧美精品aⅴ在线视频| 56国语精品自产拍在线观看| 国产欧美日韩视频一区二区| 日本不卡的三区四区五区| 免费观看在线综合色| 精品福利av导航| 蜜臀av性久久久久蜜臀aⅴ流畅| 97精品电影院| 国产亲近乱来精品视频| 国模无码大尺度一区二区三区| 日本高清不卡一区| 国产精品青草久久| 成人午夜电影久久影院| 国产日韩v精品一区二区| 亚洲午夜在线视频| 99热99精品| 一区二区三区视频在线观看| av电影在线观看不卡| 国产精品每日更新| 91福利小视频| 欧美亚洲国产bt| 亚洲一区中文日韩| 欧美精品1区2区3区| 国产麻豆精品视频| 久久一区二区视频| 欧美视频精品在线| 99久久免费精品高清特色大片| 免费xxxx性欧美18vr| 一级精品视频在线观看宜春院 | 精品国产欧美一区二区| 狠狠色丁香九九婷婷综合五月| 在线成人av影院| 久久激情五月激情| 久久久五月婷婷| 91女人视频在线观看| 91精品国产综合久久久久久漫画 | 精品亚洲成a人| 亚洲激情男女视频| 亚洲精品一区二区三区精华液| 丁香激情综合五月| 爽爽淫人综合网网站| 久久无码av三级| 欧美男人的天堂一二区| 日本精品一区二区三区高清| 成人午夜伦理影院| 国产麻豆一精品一av一免费| 国内精品伊人久久久久av影院| 韩国中文字幕2020精品| 国产伦精一区二区三区| 国产成人精品一区二| 成人av小说网| 国产精品香蕉一区二区三区| 国产精品夜夜嗨| 久久se精品一区精品二区| 麻豆91在线观看| 国产一区久久久| 成人av免费在线播放| 亚洲精品乱码久久久久久| 亚洲国产精品自拍| 中文字幕日韩一区二区| 日韩经典中文字幕一区| 激情av综合网| 一本久久精品一区二区 | 琪琪一区二区三区| 激情图区综合网| 91免费观看在线| 欧美大片国产精品| 国产女同性恋一区二区| 亚洲精品成人在线| 国产主播一区二区| 精品国产免费久久| 经典一区二区三区| 国产日本欧美一区二区| 国产成人亚洲综合a∨猫咪| 精品日韩一区二区三区| 久久99久久精品欧美| 91激情在线视频| 亚洲欧洲99久久| 国产成人午夜精品5599 | 日韩精品成人一区二区三区| 在线一区二区三区四区五区| 一区在线中文字幕| 日韩av中文在线观看| 色婷婷久久久久swag精品| 国产精品天天看| 国产一区二区调教| 欧美白人最猛性xxxxx69交| 亚洲一卡二卡三卡四卡| 色婷婷国产精品| 2020日本不卡一区二区视频| 一区二区三区欧美视频| 欧美一级免费观看| 美女脱光内衣内裤视频久久网站| 26uuu欧美| 日韩午夜激情av| 91蝌蚪porny| 91精品国产入口| hitomi一区二区三区精品| 午夜精品福利一区二区三区av| 中文字幕一区二区三区不卡| 日韩视频在线你懂得| 欧美精品在线视频| 欧美亚洲自拍偷拍| 色伊人久久综合中文字幕| 99久久亚洲一区二区三区青草| 久久99精品国产麻豆婷婷洗澡| 图片区小说区区亚洲影院| 伊人开心综合网|