cao死我好湿好紧好爽动态视屏|精选久久久久久久久久|中文无码精品一区二区三区四季|AAA国语精品刺激对白视频|

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

Python游戲源碼(Python游戲源代碼)

軟件開放2年前 (2023-01-30)1184

本篇文章給大家談?wù)凱ython游戲源碼,以及Python游戲源代碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

python實現(xiàn)超級瑪麗小游戲(動圖演示+源碼分享)

效果演示:

基礎(chǔ)源碼

1.基礎(chǔ)設(shè)置(tools部分)

2.設(shè)置背景音樂以及場景中的文字(setup部分)

3.設(shè)置 游戲 規(guī)則(load_screen)

4.設(shè)置 游戲 內(nèi)菜單等(main_menu)

5.main()

6.調(diào)用以上函數(shù)實現(xiàn)

1.基礎(chǔ)設(shè)置(tools部分)

這個部分設(shè)置馬里奧以及 游戲 中蘑菇等怪的的移動設(shè)置。

python小游戲2048,上班摸魚必備(附源碼)

話不多說,直接上菜

為了方便大家copy,我就不分段解釋了

import turtle, random

# 定義一個類,用來畫除了數(shù)字方塊之外的圖形

class BackGround(turtle.Turtle):

? ? def __init__(self):

? ? ? ? super().__init__()

? ? ? ? self.penup()

? ? ? ? self.ht()

? ? def draw_block(self):

? ? ? ? self.shape('bg.gif')? # 畫出背景方塊

? ? ? ? for i in allpos:

? ? ? ? ? ? self.goto(i)

? ? ? ? ? ? self.stamp()

? ? ? ? self.color('white', 'white')? # 畫出其他背景

? ? ? ? self.goto(-215, 120)

? ? ? ? self.begin_fill()

? ? ? ? self.goto(215, 120)

? ? ? ? self.goto(215, 110)

? ? ? ? self.goto(-215, 110)

? ? ? ? self.end_fill()

? ? ? ? self.shape('title.gif')

? ? ? ? self.goto(-125, 210)

? ? ? ? self.stamp()

? ? ? ? self.shape('score.gif')

? ? ? ? self.goto(125, 245)

? ? ? ? self.stamp()

? ? ? ? self.shape('top_score.gif')

? ? ? ? self.goto(125, 170)

? ? ? ? self.stamp()

? ? # 游戲失敗及達成2048的提示文字

? ? def judge(self):

? ? ? ? global flag_win, flag_win_lose_text

? ? ? ? self.color('blue')

? ? ? ? judge = 0? # 判斷是否還有位置可以移動

? ? ? ? for i in block_dic.values():

? ? ? ? ? ? for j in block_dic.values():

? ? ? ? ? ? ? ? if i.num == 0 or i.num == j.num and i.distance(j) == 100:

? ? ? ? ? ? ? ? ? ? judge += 1

? ? ? ? if judge == 0:? # 無位置可移動,游戲失敗

? ? ? ? ? ? self.write('? ? GAME OVER\n重新開始請按空格鍵', align='center', font=('黑體', 30, 'bold'))

? ? ? ? ? ? flag_win_lose_text = False

? ? ? ? if flag_win is True:? # 此條件讓2048達成的判斷只能進行一次

? ? ? ? ? ? for k in block_dic.values():

? ? ? ? ? ? ? ? if k.num == 2048:? # 游戲達成

? ? ? ? ? ? ? ? ? ? flag_win = False

? ? ? ? ? ? ? ? ? ? self.write('? ? 達成2048\n繼續(xù)游戲請按回車鍵', align='center', font=('黑體', 30, 'bold'))

? ? ? ? ? ? ? ? ? ? flag_win_lose_text = False

? ? def win_lose_clear(self):

? ? ? ? global flag_win_lose_text

? ? ? ? self.clear()

? ? ? ? flag_win_lose_text = True

? ? def show_score(self):? # 分值的顯示

? ? ? ? global score, top_score

? ? ? ? if score top_score:

? ? ? ? ? ? top_score = score

? ? ? ? ? ? with open('.\\score.txt', 'w') as f:

? ? ? ? ? ? ? ? f.write(f'{top_score}')

? ? ? ? self.color('white')

? ? ? ? self.goto(125, 210)

? ? ? ? self.clear()

? ? ? ? self.write(f'{score}', align='center', font=('Arial', 20, 'bold'))

? ? ? ? self.goto(125, 135)

? ? ? ? self.write(f'{top_score}', align='center', font=('Arial', 20, 'bold'))

# 數(shù)字方塊類

class Block(turtle.Turtle):

? ? def __init__(self):

? ? ? ? super().__init__()

? ? ? ? self.ht()

? ? ? ? self.penup()

? ? ? ? self.num = 0

? ? def draw(self):

? ? ? ? self.clear()

? ? ? ? dic_draw = {2: '#eee6db', 4: '#efe0cd', 8: '#f5af7b',

? ? ? ? ? ? ? ? ? ? 16: '#fb9660', 32: '#f57d5a', 64: '#f95c3d',

? ? ? ? ? ? ? ? ? ? 128: '#eccc75', 256: '#eece61', 512: '#efc853',

? ? ? ? ? ? ? ? ? ? 1024: '#ebc53c', 2048: '#eec430', 4096: '#aeb879',

? ? ? ? ? ? ? ? ? ? 8192: '#aab767', 16384: '#a6b74f'}

? ? ? ? if self.num 0:? # 數(shù)字大于0,畫出方塊

? ? ? ? ? ? self.color(f'{dic_draw[self.num]}')? # 選擇顏色

? ? ? ? ? ? self.begin_fill()

? ? ? ? ? ? self.goto(self.xcor()+48, self.ycor()+48)

? ? ? ? ? ? self.goto(self.xcor()-96, self.ycor())

? ? ? ? ? ? self.goto(self.xcor(), self.ycor()-96)

? ? ? ? ? ? self.goto(self.xcor()+96, self.ycor())

? ? ? ? ? ? self.goto(self.xcor(), self.ycor()+96)

? ? ? ? ? ? self.end_fill()

? ? ? ? ? ? self.goto(self.xcor()-48, self.ycor()-68)

? ? ? ? ? ? if self.num 4:? # 按照數(shù)字選擇數(shù)字的顏色

? ? ? ? ? ? ? ? self.color('white')

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? self.color('#6d6058')

? ? ? ? ? ? self.write(f'{self.num}', align='center', font=('Arial', 27, 'bold'))

? ? ? ? ? ? self.goto(self.xcor(), self.ycor()+20)

class Game():

? ? def init(self):

? ? ? ? back = BackGround()? # 實例畫出游戲的背景

? ? ? ? back.draw_block()

? ? ? ? for i in allpos:? # 畫出16個海龜對應(yīng)16個數(shù)字塊

? ? ? ? ? ? block = Block()

? ? ? ? ? ? block.goto(i)

? ? ? ? ? ? block_dic[i] = block

? ? ? ? game.grow()

? ? def restart(self):? # 重開游戲的方法

? ? ? ? global score, flag_win_lose_text

? ? ? ? score = 0

? ? ? ? for i in block_dic.values():

? ? ? ? ? ? i.num = 0

? ? ? ? ? ? i.clear()

? ? ? ? win_lose_text.clear()

? ? ? ? game.grow()

? ? ? ? flag_win_lose_text = True? # 此flag為游戲達成或失敗出現(xiàn)提示語后的判斷,要提示語被clear后才能繼續(xù)move

? ? def grow(self):? # 隨機出現(xiàn)一個2或4的數(shù)字塊

? ? ? ? block_list = []

? ? ? ? for i in allpos:

? ? ? ? ? ? if block_dic[i].num == 0:

? ? ? ? ? ? ? ? block_list.append(block_dic[i])? # 挑出空白方塊的海龜

? ? ? ? turtle_choice = random.choice(block_list)? # 隨機選中其中一個海龜

? ? ? ? turtle_choice.num = random.choice([2, 2, 2, 2, 4])? # 賦屬性num=2/4

? ? ? ? turtle_choice.draw()

? ? ? ? win_lose_text.judge()

? ? ? ? show_score_text.show_score()

? ? ? ? ms.update()

? ? def move_up(self):

? ? ? ? allpos1 = allpos[::4]? # 切片為四列

? ? ? ? allpos2 = allpos[1::4]

? ? ? ? allpos3 = allpos[2::4]

? ? ? ? allpos4 = allpos[3::4]

? ? ? ? self.move_move(allpos1, allpos2, allpos3, allpos4)

? ? def move_down(self):

? ? ? ? allpos1 = allpos[-4::-4]

? ? ? ? allpos2 = allpos[-3::-4]

? ? ? ? allpos3 = allpos[-2::-4]

? ? ? ? allpos4 = allpos[-1::-4]

? ? ? ? self.move_move(allpos1, allpos2, allpos3, allpos4)

? ? def move_left(self):

? ? ? ? allpos1 = allpos[:4]

? ? ? ? allpos2 = allpos[4:8]

? ? ? ? allpos3 = allpos[8:12]

? ? ? ? allpos4 = allpos[12:16]

? ? ? ? self.move_move(allpos1, allpos2, allpos3, allpos4)

? ? def move_right(self):

? ? ? ? allpos1 = allpos[-1:-5:-1]

? ? ? ? allpos2 = allpos[-5:-9:-1]

? ? ? ? allpos3 = allpos[-9:-13:-1]

? ? ? ? allpos4 = allpos[-13:-17:-1]

? ? ? ? self.move_move(allpos1, allpos2, allpos3, allpos4)

? ? def move_move(self, allpos1, allpos2, allpos3, allpos4):

? ? ? ? if flag_win_lose_text is True:

? ? ? ? ? ? count1 = self.move(allpos1)? # 四列或四行依次移動

? ? ? ? ? ? count2 = self.move(allpos2)

? ? ? ? ? ? count3 = self.move(allpos3)

? ? ? ? ? ? count4 = self.move(allpos4)

? ? ? ? ? ? if count1 or count2 or count3 or count4:? # 判斷是否有方塊移動,有才能繼續(xù)出現(xiàn)新的數(shù)字塊

? ? ? ? ? ? ? ? self.grow()

? ? def move(self, pos_list):

? ? ? ? num_list = []? # 為某一列或行的數(shù)字塊海龜?shù)淖鴺?biāo)

? ? ? ? for i in pos_list:

? ? ? ? ? ? num_list.append(block_dic[i].num)? #? 把這些海龜?shù)腘UM形成list

? ? ? ? new_num_list, count = self.list_oper(num_list)? #? 只是list_oper的方法形成新的list

? ? ? ? for j in range(len(new_num_list)):? # 把新的list依次賦值給對應(yīng)的海龜.num屬性并調(diào)用draw()方法

? ? ? ? ? ? block_dic[pos_list[j]].num = new_num_list[j]

? ? ? ? ? ? block_dic[pos_list[j]].draw()

? ? ? ? return count

? ? def list_oper(self, num_list):? # num_list的操作,假設(shè)其為【2,0,2,2】

? ? ? ? global score

? ? ? ? count = True

? ? ? ? temp = []

? ? ? ? new_temp = []

? ? ? ? for j in num_list:

? ? ? ? ? ? if j != 0:

? ? ? ? ? ? ? ? temp.append(j)? # temp=[2,2,2]

? ? ? ? flag = True

? ? ? ? for k in range(len(temp)):

? ? ? ? ? ? if flag:

? ? ? ? ? ? ? ? if k len(temp)-1 and temp[k] == temp[k+1]:

? ? ? ? ? ? ? ? ? ? new_temp.append(temp[k]*2)

? ? ? ? ? ? ? ? ? ? flag = False

? ? ? ? ? ? ? ? ? ? score += temp[k]

? ? ? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? new_temp.append(temp[k])? # new_temp=[4,2]

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? flag = True

? ? ? ? for m in range(len(num_list)-len(new_temp)):

? ? ? ? ? ? new_temp.append(0)? # new_temp=[4,2,0,0]

? ? ? ? if new_temp == num_list:

? ? ? ? ? ? count = False? # 此變量判斷num_list沒有變化,數(shù)字塊無移動

? ? ? ? return(new_temp, count)

if __name__ == '__main__':

? ? ms = turtle.Screen()? # 主窗口的設(shè)置

? ? ms.setup(430, 630, 400, 50)

? ? ms.bgcolor('gray')

? ? ms.title('2048')

? ? ms.tracer(0)

? ? ms.register_shape('bg.gif')

? ? ms.register_shape('title.gif')

? ? ms.register_shape('score.gif')

? ? ms.register_shape('top_score.gif')

? ? block_dic = {}? # 放數(shù)字方塊海龜?shù)淖值?,位置坐?biāo)為key,對應(yīng)海龜為value

? ? allpos = [(-150, 50), (-50, 50), (50, 50), (150, 50),

? ? ? ? ? ? ? (-150, -50), (-50, -50), (50, -50), (150, -50),

? ? ? ? ? ? ? (-150, -150), (-50, -150), (50, -150), (150, -150),

? ? ? ? ? ? ? (-150, -250), (-50, -250), (50, -250), (150, -250)]

? ? flag_win = True? # 達成2048的判斷,讓達成的文字僅出現(xiàn)一次

? ? flag_win_lose_text = True? # 用來判斷失敗或成功的提示文字是否有被清除,不清除不能繼續(xù)移動方塊

? ? score = 0

? ? with open('.\\score.txt', 'r') as f:

? ? ? ? top_score = int(f.read())? #? 讀取score中的數(shù)據(jù)

? ? show_score_text = BackGround()

? ? win_lose_text = BackGround()

? ? game = Game()

? ? game.init()

? ? ms.listen()

? ? ms.onkey(game.move_up, 'Up')

? ? ms.onkey(game.move_down, 'Down')

? ? ms.onkey(game.move_left, 'Left')

? ? ms.onkey(game.move_right, 'Right')

? ? ms.onkey(win_lose_text.win_lose_clear, 'Return')

? ? ms.onkey(game.restart, 'space')

? ? ms.mainloop()

這是游戲界面:

歡迎挑戰(zhàn)最高分。

要運行出來,必須本地要有這些文件:bg.gif,score.gif,title.gif,top_score.gif,score.txt

我把這些文件放在了群里,還有一些學(xué)習(xí)的資料,群號642109462,歡迎對python感興趣的進群討論。

支持作者的,可以關(guān)注和點贊。感謝你們!

Python游戲開發(fā),Python實現(xiàn)貪吃蛇小游戲與吃豆豆 附帶源碼

Python版本: 3.6.4

相關(guān)模塊:

pygame模塊;

以及一些Python自帶的模塊。

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

貪吃蛇的 游戲 規(guī)則應(yīng)該不需要我多做介紹了吧T_T。寫個貪吃蛇 游戲 其實還是很簡單的。首先,我們進行一下 游戲 初始化:

然后定義一個貪吃蛇類:

其中head_coord用來記錄蛇頭所在位置,而tail_coords是一個二維數(shù)組,用來記錄所有蛇身的位置。一開始,貪吃蛇長為3,并且位置是隨機生成的。用戶通過 鍵來控制貪吃蛇的行動:

需要注意的是,貪吃蛇不能180 大拐彎,只能90 地拐彎。例如正在向左行動的貪吃蛇不能瞬間變成向右行動。具體而言,代碼實現(xiàn)如下:

然后,我們需要隨機生成一個食物,且需要保證該食物的位置不與貪吃蛇的位置相同:

在更新貪吃蛇的時候,如果它吃到了食物,則蛇身長加一,否則只是簡單的按照給定的方向行動而不改變蛇身長度:

同時,當(dāng)貪吃蛇吃到食物時,需要重新生成一個新的食物:

最后,當(dāng)貪吃蛇碰到墻壁或者蛇頭碰到蛇身時, 游戲 結(jié)束:

并顯示一下 游戲 結(jié)束界面:

玩家通過 鍵控制 游戲 的主角吃豆人吃掉藏在迷宮內(nèi)的所有豆子,并且不能被鬼魂抓到。

若能順利吃完迷宮內(nèi)的所有豆子并且不被鬼魂抓到,則 游戲 勝利,否則 游戲 失敗。

逐步實現(xiàn):

Step1:定義 游戲 精靈類

首先,讓我們先來明確一下該 游戲 需要哪些 游戲 精靈類。

① 墻類

② 食物類(即豆豆)

③ 角色類

角色類包括吃豆人和鬼魂,鬼魂由電腦控制其運動軌跡,吃豆人由玩家控制其運動軌跡。

顯然,其均需具備更新角色位置和改變角色運動方向的能力,其源代碼如下:

Step2:設(shè)計 游戲 地圖

利用Step1中定義的 游戲 精靈類,我們就可以開始設(shè)計 游戲 地圖了。由于時間有限,我只寫了一個關(guān)卡的 游戲 地圖,有興趣的小伙伴可以在此基礎(chǔ)上進行擴展(在我的源代碼基礎(chǔ)上進行擴展是很方便滴~)。 游戲 地圖的設(shè)計包括以下四方面內(nèi)容:

① 創(chuàng)建墻

② 創(chuàng)建門(一開始關(guān)幽靈用的)

image.gif

③ 創(chuàng)建角色

④ 創(chuàng)建食物

因為食物不能和墻、門以及角色的位置重疊,所以為了方便設(shè)計 游戲 地圖,要先創(chuàng)建完墻、門以及角色后再創(chuàng)建食物:

Step3:設(shè)計 游戲 主循環(huán)

接下來開始設(shè)計 游戲 主循環(huán)。首先是初始化:

然后定義主函數(shù):

其中startLevelGame函數(shù)用于開始某一關(guān) 游戲 ,其源代碼如下:

showText函數(shù)用于在 游戲 結(jié)束或關(guān)卡切換時在 游戲 界面中顯示提示性文字,其源代碼如下:

求個Python小游戲

淺淺的笑著:“我會帶著你的孩子,

顚節(jié)進入

Python程序開發(fā)之簡單小程序?qū)嵗? (11)小 游戲 -跳動的小球 一、項目功能 用戶控制擋板來阻擋跳動的小球。 二、項目分析 根據(jù)項目功能自定義兩個類,一個用于控制小球在窗體中的運動,一個用于接收用戶按下左右鍵時,擋板在窗體中的運動。在控制小球的類中,我們還需要考慮當(dāng)小球下降時,碰到擋板時的位置判斷。 三、程序源代碼 源碼部分截圖: 源碼: #!/usr/bin/python3.6 # -*- coding: GBK -*- #導(dǎo)入相應(yīng)模塊 from tkinter import * import random import time #自定義小球的類 Ball class Ball: # 初始化 def __init__(self,canvas,paddle,color): #傳遞畫布值 self.canvas=canvas #傳遞擋板值 self.paddle=paddle #畫圓并且保存其ID self.id=canvas.create_oval(10,10,25,25,fill=color) self.canvas.move(self.id,245,100) #小球的水平位置起始列表 start=[-3,-2,-1,1,2,3] #隨機化位置列表 random.shuffle(start) self.x=start[0] self.y=-2 self.canvas_heigh=self.canvas.winfo_height()#獲取窗口高度并保存 self.canvas_width=self.canvas.winfo_width() #根據(jù)參數(shù)值繪制小球 def draw(self): self.canvas.move(self.id,self.x,self.y) pos=self.canvas.coords(self.id)#返回相應(yīng)ID代表的圖形的當(dāng)前坐標(biāo)(左上角和右上角坐標(biāo)) #使得小球不會超出窗口 pad=self.canvas.coords(self.paddle.id)#獲取小球擋板的坐標(biāo) if pos[1]=self.canvas_heigh or(pos[3]=pad[1] and pos[2]=pad[0] and pos[2]

關(guān)于Python游戲源碼和Python游戲源代碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

掃描二維碼推送至手機訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://m.smallwaterjetsystem.com/post/6212.html

標(biāo)簽: Python游戲源碼

“Python游戲源碼(Python游戲源代碼)” 的相關(guān)文章

天津軟件開發(fā)(天津軟件開發(fā)成功柚米科技)

天津軟件開發(fā)(天津軟件開發(fā)成功柚米科技)

本篇文章給大家談?wù)勌旖蜍浖_發(fā),以及天津軟件開發(fā)成功柚米科技對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、天津地區(qū)哪個軟件公司的軟件開發(fā)能力比較好呢? 2、天津軟件公司有哪些? 3、天津比較好的軟件開發(fā)公司有哪些 4、天津脈鉑科技發(fā)展是外包公司嗎 天津地區(qū)...

蘇州軟件開發(fā)兼職(蘇州軟件招聘)

蘇州軟件開發(fā)兼職(蘇州軟件招聘)

今天給各位分享蘇州軟件開發(fā)兼職的知識,其中也會對蘇州軟件招聘進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、蘇州有什么靠譜勞務(wù)? 2、蘇州肯德基兼職工資待遇? 3、蘇州兼職 4、蘇州找工作,找兼職去哪里? 5、蘇州園區(qū)有什么工資可日結(jié)的兼職工...

山東軟件開發(fā)(山東軟件開發(fā)的學(xué)校有哪些)

山東軟件開發(fā)(山東軟件開發(fā)的學(xué)校有哪些)

今天給各位分享山東軟件開發(fā)的知識,其中也會對山東軟件開發(fā)的學(xué)校有哪些進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、山東做軟件開發(fā)的公司哪些好 2、芊芊軟件開發(fā)山東有限公司上班怎么樣 3、山東軟件APP開發(fā)哪家好? 山東做軟件開發(fā)的公司哪些好 山東...

米哈游游戲交易平臺(米哈游官網(wǎng)賬號交易)

米哈游游戲交易平臺(米哈游官網(wǎng)賬號交易)

今天給各位分享米哈游游戲交易平臺的知識,其中也會對米哈游官網(wǎng)賬號交易進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、交易貓米哈游換綁碼是什么 2、米哈游有沒有賬號交易平臺 3、原神號在哪才能買到? 4、米哈游有官方交易平臺嗎 5、米哈游實名認(rèn)...

uu8686游戲交易平臺怎么樣(uu868游戲交易官網(wǎng)客服)

uu8686游戲交易平臺怎么樣(uu868游戲交易官網(wǎng)客服)

今天給各位分享uu8686游戲交易平臺怎么樣的知識,其中也會對uu868游戲交易官網(wǎng)客服進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、uu8968和8686購寶通這兩個游戲交易平臺可靠嗎?可不可安全購買? 2、有個叫UU86的交易平臺是騙人的 大家不要...

百度網(wǎng)盤企業(yè)加速券(百度網(wǎng)盤如何使用加速券)

百度網(wǎng)盤企業(yè)加速券(百度網(wǎng)盤如何使用加速券)

本篇文章給大家談?wù)劙俣染W(wǎng)盤企業(yè)加速券,以及百度網(wǎng)盤如何使用加速券對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、百度網(wǎng)盤怎么買五分鐘加速券 2、百度網(wǎng)盤獲取的倍速播放券沒過期卻用不了 3、百度網(wǎng)盤辦了會員、買了加速券,這種下載速度,請問百度網(wǎng)盤是不是要倒閉了?...