pygame模块是一个可以跨平台的模块,主要就是作为游戏开发来进行使用的,那么,怎么才能够实现其游戏开发的技能了?比如说,怎么实现使用pygame去实现拼图的游戏呢?下面就给大家详细解答下。
pygame介绍
Python Pygame是一款专门为开发和设计2D电子游戏而生的软件包,它支Windows、Linux、Mac OS等操作系统,具有良好的跨平台性。Pygame由Pete Shinners于2000年开发而成,是一款免费、开源的的软件包,因此您可以放心地使用它来开发游戏,不用担心有任何费用产生。
Pygame在SDL(Simple DirectMedia Layer,使用C语言编写的多媒体开发库)的基础上开发而成,它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。相比于开发3D游戏而言,Pygame更擅长开发2D游戏,比如于飞机大战、贪吃蛇、扫雷等游戏。
安装pygame
pip install pygame
pygame常用模块
pygame.cdrom访问光驱
pygame.cursors加载光标
pygame.display访问显示设备
pygame.draw绘制形状、线和点
pygame.event管理事件
pygame.font使用字体
pygame.image加载和存储图片
pygame.joystick使用游戏手柄或者类似的东西
pygame.key读取键盘按键
pygame.mixer声音
pygame.mouse鼠标
pygame.movie播放视频
pygame.music播放音频
pygame.overlay访问高级视频叠加
pygame.rect管理矩形区域
pygame.scrap本地剪贴板访问
pygame.sndarray操作声音数据
pygame.sprite操作移动图像
pygame.surface管理图像和屏幕
pygame.surfarray管理点阵图像数据
pygame.time管理时间和帧信息
pygame.transform缩放和移动图像
pygame入门案例
import pygame import sys pygame.init()#初始化pygame size=width,height=320,240#设置窗口大小 screen=pygame.display.set_mode(size)#显示窗口 while True:#死循环确保窗口一直显示 for event in pygame.event.get():#遍历所有事件 if event.type==pygame.QUIT:#如果单击关闭窗口,则退出 sys.exit() pygame.quit()#退出pygame
pygame实现拼图游戏
import pygame,sys,random from pygame.locals import* #一些常量 WINDOWWIDTH=500 WINDOWHEIGHT=500 BACKGROUNDCOLOR=(255,255,255) BLUE=(0,0,255) BLACK=(0,0,0) FPS=40 VHNUMS=3 CELLNUMS=VHNUMS*VHNUMS MAXRANDTIME=100 #退出 def terminate(): pygame.quit() sys.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)
综上所述,这篇文章就给大家介绍到这里了,希望可以给各位读者带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128330.html
Python pygame作为一门常见的技能,其实,它的应用范围还是比较的广泛的,那么,它是怎么实现其拼图游戏呢?下面就以案例的形式,去给大家做个解答,下面就给大家详细解答下。 pygame介绍 Python Pygame是一款专门为开发和设计2D电子游戏而生的软件包,它支Windows、Linux、Mac OS等操作系统,具有良好的跨平台性。Pygame由Pete Shinners于20...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
作者:海拥 主页:https://haiyong.blog.csdn.net/ Pygame是一组跨平台的 Python 模块,专为编写视频游戏而设计。它包括旨在与 Python 编程语言一起使用的计算机图形和声音库。您可以使用 pygame 创建不同类型的游戏,包括街机游戏、平台游戏等等。 使用的图像: 你可以控制玩家的移动。为此,首先使用 pygame 的 display.set...
摘要:和标志,用于表示飞船是否正在移动,用于实现飞船在不松开按键下连续移动。重写了函数,用于绘制飞船模块该模块主要是集中处理游戏中发生的各种事件。函数用于监听游戏的事件,比如,它表示游戏推出事件和分别表示键盘按下与松开事件。 《Python编程:从入门到实践》笔记。本章主要学习如何使用pygame编写一个简单的小飞机打外星人的游戏,由于本人对用python写游戏并不是特别感兴趣,所以主要是看...
阅读 910·2023-01-14 11:38
阅读 877·2023-01-14 11:04
阅读 740·2023-01-14 10:48
阅读 1980·2023-01-14 10:34
阅读 941·2023-01-14 10:24
阅读 818·2023-01-14 10:18
阅读 498·2023-01-14 10:09
阅读 571·2023-01-14 10:02