日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

發布時間:2023/12/10 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

手把手制作Python小游戲:俄羅斯方塊1

大家好,新手第一次寫文章,請多多指教

A.準備工作:

這里我們運用的是Pygame庫,因為Python沒有內置,所以需要下載

如果沒有pygame,可以到官網下載

pygame官網,單擊右邊即可:pygame下載地址鏈接

加下來就可以導入試一試了,這里作者我運用的是

visual-studio-code 因為它有個很方便作者很喜歡的地方:可以自動保存

請這樣設置:

打開之后單擊 文件(F)

在此菜單里再單擊 自動保存 即可

運行程序需要:右鍵,單擊 在終端運行python文件

如何下載VS Code 呢 單擊右邊鏈接:官網

之后在:

分別搜索:

1.搜索 Chinese 下載第一個插件插件(中文,簡體)

2.搜索 python 下載第一個即可(需要注意的是,建議大家在添加此插件時先下載好Python,作者就是這樣)

3.強烈建議大家更新至最新版,這樣點擊右上角的綠三角行就可以直接運行程序了

由于介紹VS Code 的與介紹 Pygame 的網站、論文、筆記等很多,在此我就不過多介紹了,大家可以搜一搜。

接下來步入正題:

B.1制作俄羅斯方塊的第一步:

大家可以邊學邊做,不過我當然建議大家可以以章節為單位,看會了,自己編,對大家有好處嘛。

首先導入pygame庫

import pygame

之后可以先運行一次。看一看有沒有報錯,如果沒有,代表庫安裝正確,否則務必要檢查一下是否安裝了、安裝正確了嗎等問題。

沒問題的話,就開始制作俄羅斯方塊小游戲吧:

首先導入一些需要用到的庫(除Pygame,其他都已經內置好了)

import pygame #此庫未內置

import random #此庫已內置

import sys #此庫已內置

import time #此庫已內置

from pygame.locals import * # *代表所有

接下來我們來定義一些變量,在后面會用得上,在此就不過多解釋啦

初始化

FPS = 25

WINDOWWIDTH = 640

WINDOWHEIGTH = 480

BOXSIZE = 20

BOARDWIDTH = 10

BOARDHEIDTH = 20

BLANK = "."

MOVESIDEWAYSFREQ = 0.15

MOVEDOWNFREQ = 0.1

XMARGIN = int((WINDOWWIDTH - (BOARDWIDTH * BOXSIZE))/2)

TOPMARGIN = WINDOWHEIGHT - (BOARDHEIGHT * BOXSIZE) - 5

# 下面是設置一些顏色的RGB

WHITE = (255, 255, 255)

GRAY = (185, 185, 185)

BLACK = (0, 0, 0)

RED = (155, 0, 0)

LIGHTRED = (175, 20, 20)

GREEN = (0, 155, 0)

LIGHTBLUE = (20, 20, 175)

BLUE = (0, 0, 155)

YELLOW = (155, 155, 0)

LIGHTYELLOW = (175, 175, 20)

BORDERCOLOR = BLUE

BGCOLOR = BLACK

TEXTCOLOR = WHITE

TEXTSHADOWCOLOR = GRAY

COLORS = (GLUE, RED, GREEN, YELLOW)

LIGHTCOLORS = (LIGHTGLUE, LIGHTRED, LIGHTGREEN, LIGHTYELLOW)

assert lec(COLORS) == len(LIGHTCOLORS)#每一種顏色必須有對應的亮色

TEMPLATEWIDTH = 5

TEMPLATEHEIGHT = 5

第一部分第一段的代碼到這里結束啦,大家可以自己寫一寫,或者干脆復制粘貼。

我來解析其中的一部分:

1.在上述代碼中,BOXSIZE,BOARDWIDTH,BOARDHEIGH的功能是:建立游戲與屏幕像素點之間的關系。

2.

MOVESIDEWAYSFREQ = 0.15

MOVEDOWNFREQ = 0.1

通過上述兩個變量,每當玩家按下鍵盤中的左移鍵/右移鍵/下移鍵,下降的方塊也會相應的向左/右/下移動一個方塊。而且玩家可以一直按住令其一直移動。

第一個是指每0.15s移動1格(左/右),第二個是指每0.1s移動1格(下)大家在最后可以試著改變一下數據

B.2 第二步:設置形狀

加下來是設置各個圖形的形狀:建議大家復制粘貼,沒啥技術含量

sShapeTemplate = [['.....',

'.....',

'..OO.',

'.OO..',

'.....']

['.....',

'..O..',

'..OO.',

'...O.',

'.....']]

iShapeTemplate = [['..O..',

'..O..',

'..O..',

'..O..',

'.....']

['.....',

'.....',

'OOOO.',

'.....',

'.....']]

zShapeTemplate = [['.....',

'.....',

'.OO..',

'..OO.',

'.....']

['.....',

'..O..',

'.OO..',

'.O...',

'.....']]

oShapeTemplate = [['.....',

'.....',

'.OO..',

'.OO..',

'.....']]

jShapeTemplate = [['.....',

'.O...',

'.OOO.',

'.....',

'.....'],

['.....',

'..OO.',

'..O..',

'..O..',

'.....'],

['.....',

'.....',

'.OOO.',

'...O.',

'.....'],

['.....',

'..O..',

'..O..',

'.OO..',

'.....']]

lShapeTemplate = [['.....',

'...O.',

'.OOO.',

'.....',

'.....'],

['.....',

'..O..',

'..O..',

'..OO.',

'.....'],

['.....',

'.....',

'.OOO.',

'.O...',

'.....'],

['.....',

'.OO..',

'..O..',

'..O..',

'..O..']]

tShapeTemplate = [['.....',

'..O..',

'.OOO.',

'.....',

'.....'],

['.....',

'..O..',

'..OO.',

'..O..',

'.....'],

['.....',

'.....',

'.OOO.',

'..O..',

'.....'],

['.....',

'..O..',

'.OO..',

'..O..',

'.....']]

接下來我來作解釋:

在定義每個方塊時,必須知道每個類型的方塊有幾種“不同”的形狀。在上述代碼當中,列表中嵌有了含有字符串的小列表來構成這個模板。一個所謂的模板包括了一個形狀的所有的變換方式。

B.3 第三步:創建"形狀字典"

我們在這里需要一個字典變量PIECES來存儲所有的不同形狀的所有變化,具體代碼如下:

PIECES = {'S':sShapeTemplate

'I':iShapeTemplate

'Z':zShapeTemplate

'O':oShapeTemplate

'J':jShapeTemplate

'L':lShapeTemplate

'T':tShapeTemplate}

B.4 第四步:編寫主函數

這是重點哦,大家加油

主函數main()的作用是創建一些全局變量,并在游戲開始前顯示一個開始畫面,代碼如下:

def main():

global FPSCLOCK, DISPLAYSURF, BASICFONT, BIGFONT

pygame.init()

FPSCLOCK = pygame.time.Clock()

DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT))

BASICFONT = pygame.font.Font("freesansbold.ttf",18)

BIGFONT = pygame.font.Font("freesansbold.ttf",100)

pygame.display.set_caption("Tetromino")

#showTextScreen("Tetromino")

while True: #Game Loop

#if random.randint(0,1) == 0:

#pygame.mixer.music.looad("tetrisb.mid")

#else:

#pygame.mixer.music.looad("tetrisc.mid")

#pygame.mixer.music.play(-1, 0.0)

runGame()

#pygame.mixer.music.stop()

showTextScreen("Game Over !")

上述代碼中的 runGame() 函數是核心,在循環中首先隨機決定播放那個音樂。之后調用 runGame() 函數運行游戲。當游戲失敗時,runGame() 函數就會返回 main() 函數,這時會停止背景音樂并顯示游戲失敗的畫面。當玩家按下一個鍵時,函數 showTextScreen() 會顯示游戲失敗,游戲循環會再次開始,然后進行下一次游戲。

接下來的內容,均在第二篇

如果你喜歡的話,記得關注我呦

總結

以上是生活随笔為你收集整理的python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。