Pygame01之游戏开发
2024-08-26 16:56:13
一、Pygame库
Pygame是一个利用SDL库写的游戏库,SDL库全名:Simple DirectMedia Layer,据说是SamLantinga写的大牛写的为了让Loki(公司)更好的向linux上移植Windows的游戏,后来倒闭了
SDL是使用C写的,Pygame是Python中的一个常用的库
接下来记录使用Pycharm编写Python3.7的个人版超级玛丽游戏,Pygame更适合于制作2D游戏开发
二、放上代码和暂定的游戏界面
import pygame ,sys pygame.init() #初始化pygame,为使用硬件做准备
size = width,height = 1000,750 #设置整个界面的大小
speed = [1,1]
BLACK = 2,100,30 screen = pygame.display.set_mode((size)) #创建一个窗口
pygame.display.set_caption(" 三川之水") #设置窗口标题 pygame.mixer.music.load("music/home.mp3") #加载背景音乐
pygame.mixer.music.set_volume(1.0) #设置播放的音量,音量的范围为0.0-1.0
pygame.mixer.music.play(-1)
'''第一个参数为播放次数,如果是-1表示循环播放,省略表示只播放1次。
第二个参数和第三个参数分别表示播放的起始和结束位置。
''' background = pygame.image.load("image/background.png").convert() #加载和存储图片
ball = pygame.image.load(r"image/ball.png")
ballrect = ball.get_rect() #获取图片的轮廓大小 fps = 180
myclock = pygame.time.Clock() #控制游戏的帧速率 while True: #大循环
for event in pygame.event.get(): #获取电脑事件
if __name__ == '__main__':
if event.type == pygame.QUIT: #若点击退出键
sys.exit() #退出游戏见面
elif event.type == pygame.KEYDOWN: #检测键盘是否按下
if event.key == pygame.K_LEFT: #按左键
#speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)* int (speed[0]/abs(speed[0]))
if speed[0] >= 0:
speed[0] = speed[0] - 1
elif speed[0] == 0:
speed[0] = -speed[0]
else:
speed[0] = speed[0] - 1
elif event.key == pygame.K_RIGHT: #按右键
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP: #按上建
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN: #按下键
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1])) ballrect = ballrect.move(speed[0],speed[1]) #小球移动
if ballrect.left < 0 or ballrect.right > width: #检测边界,超过则反向运动
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1] screen.blit(background,(0,0)) #绘制背景
screen.blit(ball,ballrect) #绘制小球
pygame.display.update() #刷新下一个画面
myclock.tick(fps)
最新文章
- mysql通过sql语句如何批量去掉某一个表中某一个字段的下面的相同部分字符串
- hive streaming 使用shell脚本
- Qt之QNetworkInterface
- 宏基5750G 不能用内置无线网卡上网
- 纯原生js移动端城市选择插件
- Codeforces548D:Mike and Feet(单调栈)
- 媲美jQuery的JS框架----AngularJS(二)
- 【BZOJ2002】弹飞绵羊(Link-Cut Tree)
- [boost] Windows下编译
- nginx平台初识(二) 浏览器 HTTP 协议缓存机制详解
- Linux基本命令操作
- java学习笔记04-基本数据类型
- 记一次用express手写博客
- EasyWeChat使用(laravel框架下)
- 在vue项目中使用sass
- [UE4]自定义结构体、类、数据表
- How to make MySQL handle UTF-8 properly
- MySQL 修改数据
- 01-03-01【Nhibernate (版本3.3.1.4000) 出入江湖】id标签的unsaved-value属性
- rabbitmq文章源
热门文章
- avalon结合原生js tab切换
- 【opencv C++ linux】linux下编译含opencv的C++代码
- python 的小技巧之统计list里面元素的个数
- Promethues实战-简易教程系列
- [RK3399] ES8316+NS4150 播放视频只有背景音,播放歌曲有的有声音,有的无声音
- 全新的Unity跨平台开发 IDE JetBrains Rider 2019.2 x64特别版下载
- peomethues 参数设置 监控网站 /usr/local/prometheus-2.13.0.linux-amd64/prometheus --config.file=/usr/local/prometheus-2.13.0.linux-amd64/prometheus.yml --web.listen-address=:9999 --web.enable-lifecycle
- futex的设计与实现
- [原]error LNK2005:";XXX已经在 XXX.obj 中定义 使用 /FORCE(强制文件输出)暴力解决
- Python3入门(十三)——常用内置模块之集合模块collections