校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python實戰(zhàn)之實現(xiàn)康威生命游戲

Python實戰(zhàn)之實現(xiàn)康威生命游戲

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

前言

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

一、康威生命游戲規(guī)則

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

二、設計流程

1. 引入庫

代碼如下(示例):

import sys
import random
import numpy as np
import pygame

2. 設計思路

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

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

3. 設計窗口

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

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

import sys
import random
import numpy as np
import pygame
pygame.init()#初始化init()及設置
n=int(input("請輸入階數(shù):"))
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()#創(chuàng)建一個Clock對象用于操作時間

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

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

三、初始生命矩陣

我們通過循環(huán)產(chǎn)生隨機數(shù)來產(chǎn)生隨機的初始生命。

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

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

四、周圍生命的檢測

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

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

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

direction = [[-1, -1], [0, -1], [1, -1], [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0]]
    c = []
    # 計算周圍生命個數(shù)
    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)

五、生命的變化

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

## 按照生命的發(fā)展規(guī)律進行新一輪的生面變化
    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,即全部填充的矩形,當后面添加一個數(shù)字時,代表無填充,框線為數(shù)字大小的矩形,如:pygame.draw.rect(screen, GAINSBORO, (i*50, j*50, 50, 50),2)代表不填充,框線為2

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

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("請輸入階數(shù):"))
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()#創(chuàng)建一個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 = []
    # 計算周圍生命個數(shù)
    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)
    ## 按照生命的發(fā)展規(guī)律進行新一輪的生面變化
    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次

總結

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

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

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

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

巨人網(wǎng)絡通訊聲明:本文標題《Python實戰(zhàn)之實現(xiàn)康威生命游戲》,本文關鍵詞  Python,實戰(zhàn),之,實現(xiàn),康威,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實戰(zhàn)之實現(xiàn)康威生命游戲》相關的同類信息!
  • 本頁收集關于Python實戰(zhàn)之實現(xiàn)康威生命游戲的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    在线观看视频欧美| 夜夜亚洲天天久久| 老汉av免费一区二区三区| 91九色最新地址| 亚洲日本va午夜在线电影| 成人免费电影视频| 51午夜精品国产| 激情五月激情综合网| 久久综合九色欧美综合狠狠| 美女免费视频一区| 欧美一区二区视频免费观看| 日韩国产一区二| 欧美一区二区三区四区在线观看| 亚洲国产综合在线| 91麻豆精品国产自产在线| 日韩高清欧美激情| 日韩精品一区二区三区蜜臀 | 国产在线精品视频| 日韩精品一区二区三区蜜臀| 国模套图日韩精品一区二区| 精品国产乱码久久久久久影片| 青青草原综合久久大伊人精品| 日韩欧美久久一区| 国产精品一区二区男女羞羞无遮挡 | 中文字幕亚洲区| 91在线porny国产在线看| 一区二区三区四区精品在线视频| 欧洲亚洲精品在线| 丝袜美腿亚洲综合| 久久精品在线观看| 91麻豆视频网站| 亚洲国产精品一区二区尤物区| 欧美一区三区二区| 国产宾馆实践打屁股91| 久久久久久久综合色一本| 成人av网站在线| 亚洲国产色一区| 精品91自产拍在线观看一区| 精品一二三四区| 国产免费观看久久| 欧美群妇大交群中文字幕| 韩国精品久久久| 亚洲色图清纯唯美| 日韩一区二区精品在线观看| 欧美aaa在线| 国产精品福利影院| 91精品蜜臀在线一区尤物| 国产精品一区2区| 夜夜嗨av一区二区三区网页 | 天天色综合天天| 91精品国产综合久久精品app| 精品在线一区二区三区| 亚洲人成在线播放网站岛国| 日韩精品一区二区三区在线观看| 94色蜜桃网一区二区三区| 蜜臀99久久精品久久久久久软件| 中文字幕亚洲一区二区va在线| 91精品久久久久久久99蜜桃 | 粉嫩av一区二区三区在线播放| 一卡二卡欧美日韩| 久久夜色精品国产欧美乱极品| 在线精品视频一区二区三四| 国产在线精品一区二区不卡了 | 亚洲大片精品永久免费| 欧美激情一区二区在线| 欧美一二区视频| 欧美自拍丝袜亚洲| 国产成人精品影院| 精品一区二区三区香蕉蜜桃 | 国产不卡视频一区| 麻豆精品视频在线观看免费| 亚洲影院免费观看| 中文字幕一区视频| 久久天天做天天爱综合色| 欧美日韩高清一区二区三区| 99在线精品一区二区三区| 国产精品亚洲第一| 麻豆精品一区二区三区| 亚洲精品一二三四区| 亚洲精品日韩专区silk| 国产精品理伦片| 久久久99久久| 精品捆绑美女sm三区| 91免费精品国自产拍在线不卡| 国产成人免费视频网站| 国产一区在线观看视频| 日韩国产精品91| 性欧美大战久久久久久久久| 亚洲天堂精品视频| 1区2区3区国产精品| 国产精品视频线看| 中文字幕高清一区| 国产精品久久久久久久久免费丝袜| 精品国产乱子伦一区| 日韩女优电影在线观看| 欧美白人最猛性xxxxx69交| 欧美一区二区人人喊爽| 一本色道久久综合狠狠躁的推荐| 国产不卡免费视频| 国产mv日韩mv欧美| 高清shemale亚洲人妖| 成人在线综合网站| 91丨porny丨最新| 91福利国产精品| 欧美专区亚洲专区| 国产呦精品一区二区三区网站| 亚洲欧美偷拍卡通变态| 亚洲1区2区3区视频| 韩国av一区二区三区在线观看| 加勒比av一区二区| 色综合久久综合网97色综合| 欧美精品久久99| 久久久久国产一区二区三区四区 | 精品福利一区二区三区免费视频| 国产午夜亚洲精品羞羞网站| 亚洲人xxxx| 精品亚洲成a人在线观看 | 欧美影院精品一区| 欧美sm美女调教| 亚洲一区二区视频在线观看| 国产在线日韩欧美| 欧美性猛片aaaaaaa做受| 欧美精品一区二区久久久| 亚洲人成在线观看一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人手机电影网| 欧美一区二区三区在线视频| 国产精品色一区二区三区| 日韩激情中文字幕| 成人美女视频在线观看| 日韩一区二区三区电影 | 国产日产精品一区| 婷婷久久综合九色综合伊人色| 成人午夜精品在线| 日韩欧美国产一二三区| 亚洲午夜羞羞片| 99久久免费视频.com| 精品福利一区二区三区免费视频| 亚洲国产精品一区二区www| 成人免费福利片| 日韩欧美激情四射| 亚洲国产欧美在线| 91在线国产观看| 国产女人水真多18毛片18精品视频 | 久久精品国产亚洲一区二区三区| 日本韩国欧美三级| 中文字幕不卡在线观看| 国产精品123区| 精品国产乱码91久久久久久网站| 婷婷久久综合九色综合伊人色| 91国内精品野花午夜精品| 亚洲欧洲美洲综合色网| 成人h动漫精品| 欧美激情综合网| 高清shemale亚洲人妖| 久久精品人人做人人爽97| 黄页视频在线91| 久久亚洲捆绑美女| 国产一区二区在线电影| 久久综合中文字幕| 精品一区二区在线观看| 久久亚洲二区三区| 国产精品中文字幕日韩精品 | 国产一区二区中文字幕| 欧美精品一区二区三| 国产乱对白刺激视频不卡| 精品伦理精品一区| 国产一区二区女| 欧美国产视频在线| 成人国产在线观看| 亚洲天堂免费在线观看视频| 97se亚洲国产综合在线| 一区二区免费在线播放| 欧洲色大大久久| 亚洲成人精品在线观看| 正在播放一区二区| 美女视频免费一区| 国产三级精品三级在线专区| 豆国产96在线|亚洲| 亚洲美女一区二区三区| 欧美日韩一区二区欧美激情| 日本女优在线视频一区二区| 欧美成人综合网站| 国产电影一区在线| 亚洲精品你懂的| 欧美精品v国产精品v日韩精品| 男人的天堂久久精品| 久久久精品国产免大香伊| 99re视频精品| 亚洲国产一区二区三区| 精品国产一区二区亚洲人成毛片| 国产麻豆午夜三级精品| 亚洲美女屁股眼交3| 欧美福利视频导航| 国模无码大尺度一区二区三区| 国产精品久久久久久户外露出| 欧美午夜理伦三级在线观看| 日韩国产一区二| 中文字幕不卡一区| 欧美高清视频一二三区|