㈠ 用python2.7編的小游戲
幫你搜到了相關教程。
自己用google搜:
用Python和Pygame寫游戲-從入門到精通(目錄)
就可以找到了。
其是一系列的帖子:
系統學習部分用Python和Pygame寫游戲-從入門到精通(1)
Pygame的歷史,安裝Pygame,第一個Pygame腳本
用Python和Pygame寫游戲-從入門到精通(2)
理解游戲中的事件
用Python和Pygame寫游戲-從入門到精通(3)
Pygmae的屏幕顯示
用Python和Pygame寫游戲-從入門到精通(4)
使用字體模塊,Pygame 的錯誤處理
用Python和Pygame寫游戲-從入門到精通(5)
像素和顏色
用Python和Pygame寫游戲-從入門到精通(6)
使用圖像,理解Surface
用Python和Pygame寫游戲-從入門到精通(7)
繪制圖形
用Python和Pygame寫游戲-從入門到精通(8)
產生動畫和控制幀率
用Python和Pygame寫游戲-從入門到精通(9)
向量基礎
用Python和Pygame寫游戲-從入門到精通(10)
用戶輸入
用Python和Pygame寫游戲-從入門到精通(11)
使用滑鼠控制精靈。一個在滑鼠旁不斷游動的小魚的常式。
用Python和Pygame寫游戲-從入門到精通(12)
手柄操作,暫無
用Python和Pygame寫游戲-從入門到精通(13)
AI初探
用Python和Pygame寫游戲-從入門到精通(14)
狀態機
用Python和Pygame寫游戲-從入門到精通(15)
開始AI編程
用Python和Pygame寫游戲-從入門到精通(16)
AI編程總結。一個螞蟻採集食物,攻擊蜘蛛的系統模擬常式。
用Python和Pygame寫游戲-從入門到精通(17)
3D基礎
用Python和Pygame寫游戲-從入門到精通(18)
3D中的概念
用Python和Pygame寫游戲-從入門到精通(19)
第一個 3D 程序(偽)。一個空間中的3D立方體的常式。
用Python和Pygame寫游戲-從入門到精通(20)
聲音原理
用Python和Pygame寫游戲-從入門到精通(21)
使用聲音,播放音效。一個重力模擬金屬球碰撞的常式。
用Python和Pygame寫游戲-從入門到精通(22)
播放長時間的背景音樂。一個建議播放器的常式。
額外提高部分用Python和Pygame寫游戲-從入門到精通(py2exe編)
使用py2exe將pygame腳本轉換為exe可執行文件
用Python和Pygame寫游戲-從入門到精通(Sprite篇)
介紹Pygame中不是必須但又很重要的Sprite模塊,游戲中的角色實現,大多都要靠它。
實踐部分用Python和Pygame寫游戲-從入門到精通(實戰一:塗鴉畫板1)
一個類似於Windows畫圖板的小玩意兒,精簡了很多功能但是有更帥的筆刷。這一次主要是將筆刷的實現。
用Python和Pygame寫游戲-從入門到精通(實戰一:塗鴉畫板2)
加上了按鈕,我們的塗鴉畫板可以用了!
用Python和Pygame寫游戲-從入門到精通(實戰二:惡搞俄羅斯方塊1)
俄羅斯方塊,卻有不是普通的俄羅斯方塊。
用Python和Pygame寫游戲-從入門到精通(實戰二:惡搞俄羅斯方塊2)
代碼構架
用Python和Pygame寫游戲-從入門到精通(實戰二:惡搞俄羅斯方塊3)
實現說明
用Python和Pygame寫游戲-從入門到精通(實戰二:惡搞俄羅斯方塊4)
完成,提供下載
用Python和Pygame寫游戲-從入門到精通(實戰三:植物大戰僵屍1)
自己去一點點學習吧。
㈡ Python游戲開發,Python實現貪吃蛇小游戲與吃豆豆 附帶源碼
Python版本: 3.6.4
相關模塊:
pygame模塊;
以及一些Python自帶的模塊。
安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。
貪吃蛇的 游戲 規則應該不需要我多做介紹了吧T_T。寫個貪吃蛇 游戲 其實還是很簡單的。首先,我們進行一下 游戲 初始化:
然後定義一個貪吃蛇類:
其中head_coord用來記錄蛇頭所在位置,而tail_coords是一個二維數組,用來記錄所有蛇身的位置。一開始,貪吃蛇長為3,並且位置是隨機生成的。用戶通過 鍵來控制貪吃蛇的行動:
需要注意的是,貪吃蛇不能180 大拐彎,只能90 地拐彎。例如正在向左行動的貪吃蛇不能瞬間變成向右行動。具體而言,代碼實現如下:
然後,我們需要隨機生成一個食物,且需要保證該食物的位置不與貪吃蛇的位置相同:
在更新貪吃蛇的時候,如果它吃到了食物,則蛇身長加一,否則只是簡單的按照給定的方向行動而不改變蛇身長度:
同時,當貪吃蛇吃到食物時,需要重新生成一個新的食物:
最後,當貪吃蛇碰到牆壁或者蛇頭碰到蛇身時, 游戲 結束:
並顯示一下 游戲 結束界面:
玩家通過 鍵控制 游戲 的主角吃豆人吃掉藏在迷宮內的所有豆子,並且不能被鬼魂抓到。
若能順利吃完迷宮內的所有豆子並且不被鬼魂抓到,則 游戲 勝利,否則 游戲 失敗。
逐步實現:
Step1:定義 游戲 精靈類
首先,讓我們先來明確一下該 游戲 需要哪些 游戲 精靈類。
① 牆類
② 食物類(即豆豆)
③ 角色類
角色類包括吃豆人和鬼魂,鬼魂由電腦控制其運動軌跡,吃豆人由玩家控制其運動軌跡。
顯然,其均需具備更新角色位置和改變角色運動方向的能力,其源代碼如下:
Step2:設計 游戲 地圖
利用Step1中定義的 游戲 精靈類,我們就可以開始設計 游戲 地圖了。由於時間有限,我只寫了一個關卡的 游戲 地圖,有興趣的小夥伴可以在此基礎上進行擴展(在我的源代碼基礎上進行擴展是很方便滴~)。 游戲 地圖的設計包括以下四方面內容:
① 創建牆
② 創建門(一開始關幽靈用的)
image.gif
③ 創建角色
④ 創建食物
因為食物不能和牆、門以及角色的位置重疊,所以為了方便設計 游戲 地圖,要先創建完牆、門以及角色後再創建食物:
Step3:設計 游戲 主循環
接下來開始設計 游戲 主循環。首先是初始化:
然後定義主函數:
其中startLevelGame函數用於開始某一關 游戲 ,其源代碼如下:
showText函數用於在 游戲 結束或關卡切換時在 游戲 界面中顯示提示性文字,其源代碼如下:
㈢ 求個Python小游戲
Python3X\Lib\turtledemo\nim.py自帶的尼姆游戲
㈣ python做的游戲有哪些
比較大型的,使用Python的游戲有兩個,一個是《EVE》,還有一個是《文明》。另外GitHub上有很多開源的小游戲,下面給大家介紹一下:
1. Github上面有個項目Free Python Games,裡面集合了不少的Python開發的小游戲,能玩,也適合新手用來練練手,另外 PyGame 這個網站裡面裡面集合了很多Python開發的小游戲。
2. Python版本的 Flapy Bird 簡化版,但是感覺更加難玩了。當然你也可以嘗試用Python開發原版的 Flapy Bird,涵蓋了顏色圖像等:Flappy Block - 1.0。
相關推薦:《Python教程》
3. 小時候經常在手機上玩的一個游戲,也是一款經典的街機游戲,這款游戲進化之後其實就是一個打乒乓的小游戲,這里同樣有一個進化版本,圖形設計的更加好看:Ping Pong。
4. 以前初高中在學校很無聊的時候跟同桌或者前後桌玩的游戲,你還記得么?
5. 同樣一款小時候在小霸王上玩的游戲:Junk Jungle。
6. 除此之外,一款比較有名基於Pyhton的戰爭的游戲:Home - TaleWorlds Entertainment。
7. 一款看起來非常有趣的3D游戲:Galcon。
㈤ Python實現消消樂小游戲
pre{overflow-x: auto} 實現 消消樂的構成主要包括三部分:游戲主體、計分器、計時器,下面來看一下具體實現。
先來看一下游戲所需 Python 庫。
import os import sys import time import pygame import random
定義一些常量,比如:窗口寬高、網格行列數等,代碼如下:
WIDTH = 400 HEIGHT = 400 NUMGRID = 8 GRIDSIZE = 36 XMARGIN = (WIDTH - GRIDSIZE * NUMGRID) // 2 YMARGIN = (HEIGHT - GRIDSIZE * NUMGRID) // 2 ROOTDIR = os.getcwd() FPS = 30
接著創建一個主窗口,代碼如下:
pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption('消消樂')
看一下效果:
再接著在窗口中畫一個 8 x 8 的網格,代碼如下:
screen.fill((255, 255, 220)) # 游戲界面的網格繪制 def drawGrids(self): for x in range(NUMGRID): for y in range(NUMGRID): rect = pygame.Rect((XMARGIN+x*GRIDSIZE, YMARGIN+y*GRIDSIZE, GRIDSIZE, GRIDSIZE)) self.drawBlock(rect, color=(255, 165, 0), size=1 # 畫矩形 block 框 def drawBlock(self, block, color=(255, 0, 0), size=2): pygame.draw.rect(self.screen, color, block, size)
看一下效果:
再接著在網格中隨機放入各種拼圖塊,代碼如下:
while True: self.all_gems = [] self.gems_group = pygame.sprite.Group() for x in range(NUMGRID): self.all_gems.append([]) for y in range(NUMGRID): gem = Puzzle(img_path=random.choice(self.gem_imgs), size=(GRIDSIZE, GRIDSIZE), position=[XMARGIN+x*GRIDSIZE, YMARGIN+y*GRIDSIZE-NUMGRID*GRIDSIZE], downlen=NUMGRID*GRIDSIZE) self.all_gems[x].append(gem) self.gems_group.add(gem) if self.isMatch()[0] == 0: break
看一下效果:
再接著加入計分器和計時器,代碼如下:
# 顯示得分 def drawScore(self): score_render = self.font.render('分數:'+str(self.score), 1, (85, 65, 0)) rect = score_render.get_rect() rect.left, rect.top = (55, 15) self.screen.blit(score_render, rect) # 顯示加分 def drawAddScore(self, add_score): score_render = self.font.render('+'+str(add_score), 1, (255, 100, 100)) rect = score_render.get_rect() rect.left, rect.top = (250, 250) self.screen.blit(score_render, rect) # 顯示剩餘時間 def showRemainingTime(self): remaining_time_render = self.font.render('倒計時: %ss' % str(self.remaining_time), 1, (85, 65, 0)) rect = remaining_time_render.get_rect() rect.left, rect.top = (WIDTH-190, 15) self.screen.blit(remaining_time_render, rect)
看一下效果:
當設置的游戲時間用盡時,我們可以生成一些提示信息,代碼如下:
while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYUP and event.key == pygame.K_r: flag = True if flag: break screen.fill((255, 255, 220)) text0 = '最終得分: %s' % score text1 = '按 R 鍵重新開始' y = 140 for idx, text in enumerate([text0, text1]): text_render = font.render(text, 1, (85, 65, 0)) rect = text_render.get_rect() if idx == 0: rect.left, rect.top = (100, y) elif idx == 1: rect.left, rect.top = (100, y) y += 60 screen.blit(text_render, rect) pygame.display.update()
看一下效果:
說完了游戲圖形化界面相關的部分,我們再看一下游戲的主要處理邏輯。
我們通過滑鼠來操縱拼圖塊,因此程序需要檢查有無拼圖塊被選中,代碼實現如下:
def checkSelected(self, position): for x in range(NUMGRID): for y in range(NUMGRID): if self.getGemByPos(x, y).rect.collidepoint(*position): return [x, y] return None
我們需要將滑鼠連續選擇的拼圖塊進行位置交換,代碼實現如下:
def swapGem(self, gem1_pos, gem2_pos): margin = gem1_pos[0] - gem2_pos[0] + gem1_pos[1] - gem2_pos[1] if abs(margin) != 1: return False gem1 = self.getGemByPos(*gem1_pos) gem2 = self.getGemByPos(*gem2_pos) if gem1_pos[0] - gem2_pos[0] == 1: gem1.direction = 'left' gem2.direction = 'right' elif gem1_pos[0] - gem2_pos[0] == -1: gem2.direction = 'left' gem1.direction = 'right' elif gem1_pos[1] - gem2_pos[1] == 1: gem1.direction = 'up' gem2.direction = 'down' elif gem1_pos[1] - gem2_pos[1] == -1: gem2.direction = 'up' gem1.direction = 'down' gem1.target_x = gem2.rect.left gem1.target_y = gem2.rect.top gem1.fixed = False gem2.target_x = gem1.rect.left gem2.target_y = gem1.rect.top gem2.fixed = False self.all_gems[gem2_pos[0]][gem2_pos[1]] = gem1 self.all_gems[gem1_pos[0]][gem1_pos[1]] = gem2 return True
每一次交換拼圖塊時,我們需要判斷是否有連續一樣的三個及以上拼圖塊,代碼實現如下:
def isMatch(self): for x in range(NUMGRID): for y in range(NUMGRID): if x + 2 -2: for each in [res_match[1], res_match[1]+1, res_match[1]+2]: gem = self.getGemByPos(*[each, start]) if start == res_match[2]: self.gems_group.remove(gem) self.all_gems[each][start] = None elif start >= 0: gem.target_y += GRIDSIZE gem.fixed = False gem.direction = 'down' self.all_gems[each][start+1] = gem else: gem = Puzzle(img_path=random.choice(self.gem_imgs), size=(GRIDSIZE, GRIDSIZE), position=[XMARGIN+each*GRIDSIZE, YMARGIN-GRIDSIZE], downlen=GRIDSIZE) self.gems_group.add(gem) self.all_gems[each][start+1] = gem start -= 1 elif res_match[0] == 2: start = res_match[2] while start > -4: if start == res_match[2]: for each in range(0, 3): gem = self.getGemByPos(*[res_match[1], start+each]) self.gems_group.remove(gem) self.all_gems[res_match[1]][start+each] = None elif start >= 0: gem = self.getGemByPos(*[res_match[1], start]) gem.target_y += GRIDSIZE * 3 gem.fixed = False gem.direction = 'down' self.all_gems[res_match[1]][start+3] = gem else: gem = Puzzle(img_path=random.choice(self.gem_imgs), size=(GRIDSIZE, GRIDSIZE), position=[XMARGIN+res_match[1]*GRIDSIZE, YMARGIN+start*GRIDSIZE], downlen=GRIDSIZE*3) self.gems_group.add(gem) self.all_gems[res_match[1]][start+3] = gem start -= 1
之後反復執行這個過程,直至耗盡游戲時間,游戲結束。
最後,我們動態看一下游戲效果。
總結
本文我們使用 Python 實現了一個簡單的消消樂游戲,有興趣的可以對游戲做進一步擴展,比如增加關卡等。
到此這篇關於Python實現消消樂小游戲的文章就介紹到這了,希望大家以後多多支持!
㈥ 用Python寫一個簡單的小游戲
相信大家都玩過俄羅斯方塊吧,應該是小時候的回憶吧,但是想不想了解一下這個程序是怎麼寫出來的呢,自己寫出來的應該玩起來更有感覺吧!
感覺還是蠻好玩吧!
接下來,我就分享一下這個游戲的源碼過程啊!
先用python創建一個py文件
定義這次程序所需要的類
然後寫出它所需要的模塊
畫背景圖
畫網格線
# 畫已經落下的方塊
# 畫單個方塊
# 畫得分等信息
這樣就可以寫出來一個十分簡單的俄羅斯方塊啦,是不是覺得還不錯呢!
㈦ 15個Python入門小程序,你都知道哪些
有不少同學學完 Python 後仍然很難將其靈活運用。我整理15個 Python 入門的小程序。在實踐中應用 Python 會有事半功倍的效果。
實現數學里的二元二次函數: f(x, y) = 2x^2 + 3y^2 + 4xy ,需要用到指數運算符 **
將一個正整數的個位數,以及除個位數外的部分分離。需要用到 模(取余數) 運算符 % ,和 整除 運算符 //
實現一個簡單的累加器,可以接受用戶輸入3個數字,並將其累加。需要用到 復合賦值運算符:+=
輸入年份,判斷是否是閏年。閏年判斷方法:能被4整除,但不能被100整除;或者能被 400 整除。需要用到 算術運算符 和 邏輯運算符
輸入一個數字,判斷基數還是偶數,需要 模 運算和 if ... else 結構
之前做過華氏度轉攝氏度,現在通過 分支結構 實現二者互轉。
輸入三個邊長度,判斷是否構成三角形。 構成三角形的條件:兩邊之和大於第三邊 。
輸入成績分數,輸出分數對應的等級。
某企業的獎金根據銷售利潤按照如下規則計算提成。輸入銷售利潤,計算獎金。
程序隨機生成一個正整數,用戶來猜,程序根據猜的大小給出相應的提示。最後,輸出用戶猜了多少次才猜中。
輸入一個正整數,判斷是否是素數。 素數定義:大於1的自然數中,只能被1和它本身整除的自然數。如:3、5、7
用程序實現石頭剪刀布 游戲 。
字典的key是姓名,value是身高,現在需要按照身高對字典重新排序。
將二元二次函數封裝在函數中,方便調用
初學python的小夥伴注意哦~不要只依賴於教程,而忽視實操的能力。不然,是很難有進步的。可以多動動手,嘗試一下,積累經驗。
㈧ python可以玩哪些小游戲
ant 螞蟻2. bagels 百吉餅另外貪吃蛇,吃豆子都是可以的,直接代碼就可以玩。
Python包括隨您的安裝一起分發的大量標准庫。標准庫有一個稱為Turtle的模塊,這是一種向普通人介紹python編程的流行方法。今天介紹的所有游戲都是使用Python及其Turtle模塊實現的。
每個游戲都完全獨立於其他游戲,不試一試 您永遠都不知道最喜歡哪種游戲。
安裝完之後我們可以使用"python -m freegames list"來查看所有的游戲
貪吃蛇
貪吃蛇 -經典街機游戲。使用箭頭鍵導航並吃綠色食品。每次食用食物,蛇就會長出一段。避免自己進食或出界!
吃豆子
吃豆子 –經典街機游戲。使用箭頭鍵導航並吃掉所有白色食物。提防漫遊迷宮的紅色幽靈。
Flappy
Flappy-bird啟發游戲。單擊屏幕拍打翅膀。當您飛越屏幕時,請當心黑烏鴉。
加農炮
大炮-射擊運動。單擊屏幕發射您的炮彈。炮彈在其路徑中彈出藍色氣球。彈出所有氣球,然後才能越過屏幕。