国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

小學生python游戲編程4----拼圖游戲

這篇具有很好參考價值的文章主要介紹了小學生python游戲編程4----拼圖游戲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

主要設(shè)計

主要內(nèi)容是設(shè)計開發(fā)一個趣味拼圖游戲,其功能是對加載的圖片進行分割(如分割5×5矩陣或其他類型矩陣),上篇文章講了,具體可看小學生python游戲編程3----拼圖游戲-準備(https://blog.csdn.net/fqfq123456/article/details/127173684),把分隔的圖片加載到游戲界面,隨機打亂順序,用戶使用鼠標點擊圖片框中的圖片,兩次點擊的圖片進行位置互換進行拼圖,系統(tǒng)能夠自動判別拼圖是否成功并進行提示。

應用知識點

1、python知識點

1.1 函數(shù)定義與使用

函數(shù)是組織好的,可重復使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應用的模塊性,和代碼的重復利用率。
定義一個函數(shù),你可以定義一個由自己想要功能的函數(shù),以下是簡單的規(guī)則:
函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。
任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
函數(shù)內(nèi)容以冒號起始,并且縮進。
return [表達式] 結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達式的return相當于返回 None。

現(xiàn)在學習以下函數(shù),實現(xiàn)兩個小拼圖塊位置的交換
def jiaohuanFk(a, b):
# i,j為要交換的兩個小拼圖塊的序號
# 以下利用tempPos中間變量,實現(xiàn)兩個小拼圖塊位置的交換
tempPos = grid[a].pos
grid[a].pos = grid[b].pos
grid[b].pos = tempPos
在隨機打亂圖片時多次調(diào)用,重復隨機交換多次小拼圖的位置
import random
for k in range(xy-1):
i = random.randint(0, x
y-1) # 第一個小拼圖塊的序號
j = random.randint(0, x*y-1) # 第二個小拼圖塊的序號
jiaohuanFk(i, j) # 調(diào)用函數(shù)交換兩個小拼圖塊的位置

1.2 random

在Python中可以用于隨機數(shù)生成的有兩種主要途徑,一是random模塊,另一個是numpy庫中random函數(shù)。在我們?nèi)粘J褂弥?,如果是為了得到隨機的單個數(shù),多考慮random模塊;
random模塊中約7個函數(shù)都是可以用來生成隨機數(shù)的:
1、random.random():隨機生成一個 [0,1) 的浮點數(shù)
2、random.uniform(a,b):隨機生成一個 [a,b) 的浮點數(shù)
3、random.randint(a,b):隨機生成一個 [a,b] 的整數(shù),本練習中主要用此函數(shù)
4、random.choice(sequence):從列表,元組,字符串(可用于for循環(huán)的數(shù)據(jù)類型)中隨機選擇一個元素
5、random.randrange(a,b,step):在生成的<以a為始,每step遞增,以b為終>這樣的一個整數(shù)序列中隨機選擇一個數(shù)
6、random.shuffle(a):打亂一個列表的元素順序
7、random.sample(self, population, k):從序列population中隨機取出k個數(shù);population的類型可以是列表、元組、集合、字符串

2、pygamezero知識點

2.1 基本框架,取上節(jié)中講到的分隔的一個小方塊

通過此基本框架,開啟我們拼圖游戲的第一步
效果:

小學生python游戲編程4----拼圖游戲

代碼:

import pgzrun  # 導入游戲庫
from pgzero.actor import Actor
from pgzero.screen import Screen
screen: Screen  # 類型標注

fangkuai_SIZE_w = 124  # 小圖塊的寬
fangkuai_SIZE_h = 87  # 小圖塊的高
WIDTH = 5*fangkuai_SIZE_w  # 設(shè)置窗口的寬度
HEIGHT = 5*fangkuai_SIZE_h  # 設(shè)置窗口的高度

fangkuai = Actor('fenge\\df-10')  # 導入拼圖方塊圖片
fangkuai.x = WIDTH/2   # 拼圖方塊圖片的x坐標
fangkuai.y = HEIGHT/2  # 拼圖方塊圖片的y坐標


def draw():  # 繪制模塊,每幀重復執(zhí)行
    screen.clear()  # 每幀清除屏幕,便于重新繪制
    fangkuai.draw()  # 繪制小拼圖塊

pgzrun.go()  # 開始執(zhí)行游戲

2.1 拼滿游戲界面

效果:
小學生python游戲編程4----拼圖游戲

代碼:

import pgzrun  # 導入游戲庫
from pgzero.actor import Actor
from pgzero.screen import Screen
screen: Screen  # 類型標注

TILE_SIZE_w = 124  # 小圖塊的寬
TILE_SIZE_h = 87  # 小圖塊的高
x = 5  # 橫向方塊數(shù)
y = 5  # 縱向方塊數(shù)
WIDTH = x*TILE_SIZE_w  # 設(shè)置窗口的寬度
HEIGHT = y*TILE_SIZE_h  # 設(shè)置窗口的高度


**grid = [] # 列表,用來存放最終所有拼圖信息
for i in range(x): # 對行循環(huán)
    for j in range(y): # 對列循環(huán)
        fangkuai = Actor('fenge\\df-10')  # 導入拼圖方塊圖片
        fangkuai.left = j * TILE_SIZE_w # 拼圖方塊圖片最左邊的x坐標
        fangkuai.top = i * TILE_SIZE_h  # 拼圖方塊圖片最頂部的y坐標
        grid.append(fangkuai) # 將當前拼圖加入到列表中**

def draw():  # 繪制模塊,每幀重復執(zhí)行
    screen.clear()  # 每幀清除屏幕,便于重新繪制
    for fk in grid:
        fk.draw()  # 繪制小拼圖塊

pgzrun.go()  # 開始執(zhí)行游戲

2.3 拼正確,把小圖利用代碼貼完整

效果:
小學生python游戲編程4----拼圖游戲

代碼:

import pgzrun  # 導入游戲庫
from pgzero.actor import Actor
from pgzero.screen import Screen
screen: Screen  # 類型標注

TILE_SIZE_w = 124  # 根據(jù)小圖塊的寬設(shè)置
TILE_SIZE_h = 87  #  根據(jù)小圖塊的高設(shè)置
x = 5  # 橫向方塊數(shù)
y = 5  # 縱向方塊數(shù)
WIDTH = x*TILE_SIZE_w  # 設(shè)置窗口的寬度
HEIGHT = y*TILE_SIZE_h  # 設(shè)置窗口的高度
TITLE = '拼圖小游戲'

**fk_list =[]
for i in range(1,x*y+1):
    fk_list.append(Actor('fenge\\df-'+str(i)))**

grid = [] # 列表,用來存放最終所有拼圖信息
for i in range(x): # 對行循環(huán)
    for j in range(y): # 對列循環(huán)
        print(i*x+j)
        fangkuai = fk_list[i*x+j] # 導入拼圖方塊圖片
        fangkuai.left = j * TILE_SIZE_w # 拼圖方塊圖片最左邊的x坐標
        fangkuai.top = i * TILE_SIZE_h  # 拼圖方塊圖片最頂部的y坐標
        grid.append(fangkuai) # 將當前拼圖加入到列表中

def draw():  # 繪制模塊,每幀重復執(zhí)行
    screen.clear()  # 每幀清除屏幕,便于重新繪制
    for fk in grid:
        fk.draw()  # 繪制小拼圖塊

pgzrun.go()  # 開始執(zhí)行游戲

2.4 兩小方塊互換位置

效果:你可以先想想如何實現(xiàn),看看效果后結(jié)合上一節(jié)自己先試著改改,多改也是一種好的學習踐方法
小學生python游戲編程4----拼圖游戲

代碼:

import pgzrun  # 導入游戲庫
from pgzero.actor import Actor
from pgzero.screen import Screen
screen: Screen  # 類型標注

TILE_SIZE_w = 124  # 根據(jù)小圖塊的寬設(shè)置
TILE_SIZE_h = 87  #  根據(jù)小圖塊的高設(shè)置
x = 5  # 橫向方塊數(shù)
y = 5  # 縱向方塊數(shù)
WIDTH = x*TILE_SIZE_w  # 設(shè)置窗口的寬度
HEIGHT = y*TILE_SIZE_h  # 設(shè)置窗口的高度
TITLE = '拼圖小游戲'

fk_list =[]
for i in range(1,x*y+1):
    fk_list.append(Actor('fenge\\df-'+str(i)))

grid = [] # 列表,用來存放最終所有拼圖信息
for i in range(x): # 對行循環(huán)
    for j in range(y): # 對列循環(huán)
        print(i*x+j)
        fangkuai = fk_list[i*x+j] # 導入拼圖方塊圖片
        fangkuai.left = j * TILE_SIZE_w # 拼圖方塊圖片最左邊的x坐標
        fangkuai.top = i * TILE_SIZE_h  # 拼圖方塊圖片最頂部的y坐標
        grid.append(fangkuai) # 將當前拼圖加入到列表中

# 以下實現(xiàn)兩個小拼圖塊位置的交換
a = 0   # 第一個小拼圖塊的序號
b = 12   # 第二個小拼圖塊的序號
# 以下利用tempPos中間變量,實現(xiàn)兩個小拼圖塊位置的交換
tempPos = grid[a].pos
grid[a].pos = grid[b].pos
grid[b].pos = tempPos


def draw():  # 繪制模塊,每幀重復執(zhí)行
    screen.clear()  # 每幀清除屏幕,便于重新繪制
    for fk in grid:
        fk.draw()  # 繪制小拼圖塊

pgzrun.go()  # 開始執(zhí)行游戲

2.5 把互換方塊的代碼轉(zhuǎn)成函數(shù)
# 以下實現(xiàn)兩個小拼圖塊位置的交換
a = 0   # 第一個小拼圖塊的序號
b = 12   # 第二個小拼圖塊的序號
# 以下利用tempPos中間變量,實現(xiàn)兩個小拼圖塊位置的交換
tempPos = grid[a].pos
grid[a].pos = grid[b].pos
grid[b].pos = tempPos

上面的代碼換成下面的代碼,為以后的隨機打亂做好準備,此處想想為什么要定義個交換方塊的函數(shù)?
運行效果如2.4沒變

# 以下函數(shù)實現(xiàn)兩個小拼圖塊位置的交換
def jiaohuanFk(a, b):
    # i,j為要交換的兩個小拼圖塊的序號
    # 以下利用tempPos中間變量,實現(xiàn)兩個小拼圖塊位置的交換
    tempPos = grid[a].pos
    grid[a].pos = grid[b].pos
    grid[b].pos = tempPos

jiaohuanFk(0,12)
2.6 隨機多次打亂,成我們常見拼圖狀

效果:
小學生python游戲編程4----拼圖游戲

代碼:

import pgzrun  # 導入游戲庫
from pgzero.actor import Actor
from pgzero.screen import Screen
screen: Screen  # 類型標注

TILE_SIZE_w = 124  # 根據(jù)小圖塊的寬設(shè)置
TILE_SIZE_h = 87  #  根據(jù)小圖塊的高設(shè)置
x = 5  # 橫向方塊數(shù)
y = 5  # 縱向方塊數(shù)
WIDTH = x*TILE_SIZE_w  # 設(shè)置窗口的寬度
HEIGHT = y*TILE_SIZE_h  # 設(shè)置窗口的高度
TITLE = '拼圖小游戲'

fk_list =[]
for i in range(1,x*y+1):
    fk_list.append(Actor('fenge\\df-'+str(i)))

grid = [] # 列表,用來存放最終所有拼圖信息
for i in range(x): # 對行循環(huán)
    for j in range(y): # 對列循環(huán)
        # print(i*x+j)
        fangkuai = fk_list[i*x+j] # 導入拼圖方塊圖片
        fangkuai.left = j * TILE_SIZE_w # 拼圖方塊圖片最左邊的x坐標
        fangkuai.top = i * TILE_SIZE_h  # 拼圖方塊圖片最頂部的y坐標
        grid.append(fangkuai) # 將當前拼圖加入到列表中

# 以下函數(shù)實現(xiàn)兩個小拼圖塊位置的交換
def jiaohuanFk(a, b):
    # i,j為要交換的兩個小拼圖塊的序號
    # 以下利用tempPos中間變量,實現(xiàn)兩個小拼圖塊位置的交換
    tempPos = grid[a].pos
    grid[a].pos = grid[b].pos
    grid[b].pos = tempPos

import random
# 重復隨機交換多次小拼圖的位置
for k in range(x*y-1):
    i = random.randint(0, x*y-1)  # 第一個小拼圖塊的序號
    j = random.randint(0, x*y-1)  # 第二個小拼圖塊的序號
    jiaohuanFk(i, j) # 調(diào)用函數(shù)交換兩個小拼圖塊的位置

def draw():  # 繪制模塊,每幀重復執(zhí)行
    screen.clear()  # 每幀清除屏幕,便于重新繪制
    for fk in grid:
        fk.draw()  # 繪制小拼圖塊

pgzrun.go()  # 開始執(zhí)行游戲

未完,下次接著分析,輸贏及得分問題

總結(jié)

通過此次的《拼圖小游戲》游戲?qū)崿F(xiàn),讓我對pgzero處理圖片的相關(guān)知識有了進一步的了解,對函數(shù)比以前更深刻的認識。

源碼獲取

關(guān)注博主后,私聊博主免費獲取
需要技術(shù)指導,育娃新思考,企業(yè)軟件合作等更多服務(wù)請聯(lián)系博主

今天是以此模板持續(xù)更新此育兒專欄的第 4 /50次。
可以關(guān)注我,點贊我、評論我、收藏我啦。文章來源地址http://www.zghlxwxcb.cn/news/detail-409138.html

到了這里,關(guān)于小學生python游戲編程4----拼圖游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 機器學習——python訓練CNN模型實戰(zhàn)(傻瓜式教學,小學生都可以學會)代碼開源

    ? 第一章 python訓練線性模型實戰(zhàn) 第二章?python訓練決策樹模型實戰(zhàn) 第三章?python訓練神經(jīng)網(wǎng)絡(luò)模型實戰(zhàn) 第四章?python訓練支持向量機模型實戰(zhàn) 第五章?python訓練貝葉斯分類器模型實戰(zhàn) 第六章?python訓練集成學習模型實戰(zhàn) 第七章?python訓練聚類模型實戰(zhàn) 第八章?python訓練KNN模

    2024年02月04日
    瀏覽(19)
  • 計算機畢業(yè)設(shè)計ssm+vue基本微信小程序的小學生興趣延時班預約小程序

    計算機畢業(yè)設(shè)計ssm+vue基本微信小程序的小學生興趣延時班預約小程序

    隨著我國經(jīng)濟迅速發(fā)展,人們對手機的需求越來越大,各種手機軟件也都在被廣泛應用,但是對于手機進行數(shù)據(jù)信息管理,對于手機的各種軟件也是備受用戶的喜愛小學生興趣延時班預約小程序的設(shè)計與開發(fā)被用戶普遍使用,為方便用戶能夠可以隨時進行小學生興趣延時班預約小程

    2024年02月09日
    瀏覽(27)
  • c++小學生入門教程(三)

    1、輾轉(zhuǎn)相除法 兩個正整數(shù)m,n的最大公約數(shù)? 因為m與n和r都相關(guān),所以求m和n的最大公約數(shù)等價于n和r的最大公約數(shù)? ?? ?輾轉(zhuǎn)相除法:歐幾里得? ?? ?①求 m除以n的余數(shù)r r=m%n ?? ?②當r!=0時,執(zhí)行第③步,當r=0時,n就是最大公約數(shù) ?? ?③讓m=n,n=r,再求m除以n的余數(shù)r (新的m

    2024年02月06日
    瀏覽(23)
  • 小學生四則運算考試系統(tǒng)Java

    小學生四則運算考試系統(tǒng)Java

    作為大一的新生,突然出現(xiàn)一個實訓課程,讓原本平靜的生活變得很充實,學校要求寫一個小學生四則運算考試系統(tǒng)的項目,包括自動出題、自動判斷對錯并給出得分、自動給出正確答案,同時還有倒計時,在經(jīng)過幾天的努力之后,我也是馬馬虎虎的完成了一個較為簡單的考試系統(tǒng) 一

    2024年02月04日
    瀏覽(25)
  • C++ 小學生計算機輔助教學系統(tǒng)

    我們都知道計算機在教育中起的作用越來越大。 下面編寫一個程序,幫助小學生學習乘法。利用rand函數(shù)產(chǎn)生兩個一位的正整數(shù)。接著應該顯示諸如6乘7等于多少的問題?學生然后輸入答案。 程序會檢查學生的答案。 計算機助教學環(huán)境中出現(xiàn)的一個問題是學生容易疲勞。這是可

    2024年02月05日
    瀏覽(20)
  • 小學生開“卷”AIGC,絕不能輸在起跑線上

    小學生開“卷”AIGC,絕不能輸在起跑線上

    圖片來源:由無界AI生成 OpenAI的研究報告稱,未來,大量工作崗位將受到AI沖擊,首當其沖的崗位是作家、數(shù)學家、網(wǎng)頁設(shè)計師、記者、律師…… 自從ChatGPT問世以來,人類會被AI替代的討論甚囂塵上,焦慮情緒無處不在。但更多人認為, AI替代的不是人類,而是沒有掌握AI的

    2024年02月13日
    瀏覽(24)
  • java+springboot+vue開發(fā)的小學生(家長)考勤請假打卡小程序

    java+springboot+vue開發(fā)的小學生(家長)考勤請假打卡小程序

    演示視頻 小程序 https://www.bilibili.com/video/BV1RN4y167Xu/?share_source=copy_webvd_source=11344bb73ef9b33550b8202d07ae139b 管理員 https://www.bilibili.com/video/BV18H4y1z7xH/?share_source=copy_webvd_source=11344bb73ef9b33550b8202d07ae139b 主要功能:家長代替小學生注冊登錄,可向班主任請假銷假考勤打卡,查看班主任信

    2024年02月06日
    瀏覽(96)
  • 三分鐘搞懂git patch 補丁的使用,小學生也能看懂

    Git中的Patch(補?。┕δ茉试S用戶將不同分支或提交之間的更改保存為一種可重用的文件格式。通過使用Patch,您可以將您的更改發(fā)送給其他人進行審核或協(xié)作,以及在不同的Git倉庫或版本控制系統(tǒng)之間導出或?qū)敫摹?在Git中,使用以下命令來創(chuàng)建和應用Patch: 1、創(chuàng)建Pat

    2024年02月14日
    瀏覽(25)
  • python小游戲 拼圖小游戲設(shè)計與實現(xiàn)

    python小游戲 拼圖小游戲設(shè)計與實現(xiàn)

    ?? Hi,各位同學好呀,這里是L學長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 拼圖小游戲設(shè)計與實現(xiàn) (源碼) ?? 學長根據(jù)實現(xiàn)的難度和等級對項目進行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 游戲規(guī)則: 將圖像

    2024年02月08日
    瀏覽(27)
  • 學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    前言 這幾年人工智能技術(shù)大發(fā)展,Python因此幾乎成了第一位的語言。實際上,多年來,它不僅在軟件工程師中得到廣泛使用,也是各行業(yè)通用的專家語言,就是說,不管孩子以后做什么,都可能用得著。準備針對我自己上小學的孩子,每周抽出些時間,通過學習他們感興趣的

    2023年04月09日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包