python拼图游戏程序设计,Python拼图游戏
Pygame模块是一个跨平台模块。它的设计目的是为电子游戏设计,它可以支持图片和声音。下面文章主要介绍使用Python的pygame模块实现拼图游戏的相关信息。有需要的朋友可以参考一下。
目录
pygame简介安装pygamepygame常用模块pygame简介案例pygame实现拼图总结
pygame介绍
Python Pygame是一个专门为2D视频游戏的开发和设计而设计的软件包。它支持Windows、Linux、Mac OS等操作系统,具有良好的跨平台性。Pygame是由Pete Shinners在2000年开发的。它是一个免费的开源软件包,所以你可以放心地用它来开发游戏,而不用担心任何费用。
Pygame是在SDL(Simple DirectMedia Layer,用C语言编写的多媒体开发库)的基础上开发的。它提供了许多操作模块,如图像模块、声音模块、混音器、输入/输出(鼠标、键盘、显示屏)模块等。相比3D游戏的开发,Pygame更擅长开发2D游戏,比如飞机大战、吃蛇、扫雷等游戏。
安装pygame
pip安装游戏
pygame常用模块
Pygame.cdrom访问光驱pygame.cursors加载光标pygame.display访问显示设备pygame.draw绘制形状, Line and dot pygame.event manage事件pygame.font使用字体pygame.image加载并存储图片pygame .操纵杆使用游戏手柄或类似的东西pygame.key读取键盘按键pygame.mixer声音pygame.mouse鼠标pygame.movie播放视频pygame .音乐播放音频pygame.overlay访问高级视频overlay pygame.rect管理矩形区域pygame.scrap本地剪贴板访问pygame.sndarray操作声音数据pygame.sprite操作移动图像pygame.surf管理图像和屏幕py game . surf管理数组点阵图像数据pygame.time
pygame入门案例
导入pygame
导入系统
Pygame.init() #初始化Pygame
Size=width,height=320,240 #设置窗口大小
screen=py game . display . set _ mode(size)#显示窗口
而True: #无限循环保证窗口始终显示。
for event in py game . event . get(): #遍历所有事件
Ifevent.type==pygame.quit3360 #如果单击关闭窗口,将会退出。
sys.exit()
Pygame.quit() #退出Pygame
pygame实现拼图游戏
导入pygame,sys,random
从pygame.locals导入*
#一些常数
窗口宽度=500
窗口高度=500
背景色=(255,255,255)
蓝色=(0,0,255)
黑色=(0,0,0)
FPS=40
VHNUMS=3
CELLNUMS=VHNUMS * VHNUMS
MAXRANDTIME=100
#退出
def terminate():
pygame.quit()
[计]系统复制命令(system的简写)
.exit()
# 随机生成游戏盘面
def newGameBoard():
board = []
for i in range(CELLNUMS):
board.append(i)
blackCell = CELLNUMS - 1
board[blackCell] = -1
for i in range(MAXRANDTIME):
direction = random.randint(0, 3)
if (direction == 0):
blackCell = moveLeft(board, blackCell)
elif (direction == 1):
blackCell = moveRight(board, blackCell)
elif (direction == 2):
blackCell = moveUp(board, blackCell)
elif (direction == 3):
blackCell = moveDown(board, blackCell)
return board, blackCell
# 若空白图像块不在最左边,则将空白块左边的块移动到空白块位置
def moveRight(board, blackCell):
if blackCell % VHNUMS == 0:
return blackCell
board[blackCell - 1], board[blackCell] = board[blackCell], board[blackCell - 1]
return blackCell - 1
# 若空白图像块不在最右边,则将空白块右边的块移动到空白块位置
def moveLeft(board, blackCell):
if blackCell % VHNUMS == VHNUMS - 1:
return blackCell
board[blackCell + 1], board[blackCell] = board[blackCell], board[blackCell + 1]
return blackCell + 1
# 若空白图像块不在最上边,则将空白块上边的块移动到空白块位置
def moveDown(board, blackCell):
if blackCell < VHNUMS:
return blackCell
board[blackCell - VHNUMS], board[blackCell] = board[blackCell], board[blackCell - VHNUMS]
return blackCell - VHNUMS
# 若空白图像块不在最下边,则将空白块下边的块移动到空白块位置
def moveUp(board, blackCell):
if blackCell >= CELLNUMS - VHNUMS:
return blackCell
board[blackCell + VHNUMS], board[blackCell] = board[blackCell], board[blackCell + VHNUMS]
return blackCell + VHNUMS
# 是否完成
def isFinished(board, blackCell):
for i in range(CELLNUMS - 1):
if board[i] != i:
return False
return True
# 初始化
pygame.init()
mainClock = pygame.time.Clock()
# 加载图片
gameImage = pygame.image.load(1.jpg)
gameRect = gameImage.get_rect()
# 设置窗口,窗口的宽度和高度取决于图片的宽高
windowSurface = pygame.display.set_mode((gameRect.width, gameRect.height))
pygame.display.set_caption(拼图)
cellWidth = int(gameRect.width / VHNUMS)
cellHeight = int(gameRect.height / VHNUMS)
finish = False
gameBoard, blackCell = newGameBoard()
# 游戏主循环
while True:
for event in pygame.event.get():
if event.type == QUIT:
terminate()
if finish:
continue
if event.type == KEYDOWN:
if event.key == K_LEFT or event.key == ord(a):
blackCell = moveLeft(gameBoard, blackCell)
if event.key == K_RIGHT or event.key == ord(d):
blackCell = moveRight(gameBoard, blackCell)
if event.key == K_UP or event.key == ord(w):
blackCell = moveUp(gameBoard, blackCell)
if event.key == K_DOWN or event.key == ord(s):
blackCell = moveDown(gameBoard, blackCell)
if event.type == MOUSEBUTTONDOWN and event.button == 1:
x, y = pygame.mouse.get_pos()
col = int(x / cellWidth)
row = int(y / cellHeight)
index = col + row * VHNUMS
if (
index == blackCell - 1 or index == blackCell + 1 or index == blackCell - VHNUMS or index == blackCell + VHNUMS):
gameBoard[blackCell], gameBoard[index] = gameBoard[index], gameBoard[blackCell]
blackCell = index
if (isFinished(gameBoard, blackCell)):
gameBoard[blackCell] = CELLNUMS - 1
finish = True
windowSurface.fill(BACKGROUNDCOLOR)
for i in range(CELLNUMS):
rowDst = int(i / VHNUMS)
colDst = int(i % VHNUMS)
rectDst = pygame.Rect(colDst * cellWidth, rowDst * cellHeight, cellWidth, cellHeight)
if gameBoard[i] == -1:
continue
rowArea = int(gameBoard[i] / VHNUMS)
colArea = int(gameBoard[i] % VHNUMS)
rectArea = pygame.Rect(colArea * cellWidth, rowArea * cellHeight, cellWidth, cellHeight)
windowSurface.blit(gameImage, rectDst, rectArea)
for i in range(VHNUMS + 1):
pygame.draw.line(windowSurface, BLACK, (i * cellWidth, 0), (i * cellWidth, gameRect.height))
for i in range(VHNUMS + 1):
pygame.draw.line(windowSurface, BLACK, (0, i * cellHeight), (gameRect.width, i * cellHeight))
pygame.display.update()
mainClock.tick(FPS)
总结
到此这篇关于使用Python的pygame模块实现拼图游戏的文章就介绍到这了,更多相关Python pygame实现拼图游戏内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。