一、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)
 

Pygame01之游戏开发的更多相关文章

  1. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  2. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  3. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  4. [游戏开发-学习笔记]菜鸟慢慢飞(四)-Camera

    游戏开发中,主相机应该是最重要的GameObject之一,毕竟游戏呈现给玩家,就是通过它. 相机的使用,在不同的游戏中,有很大的不同.这里总结一下自己学到的一些相关知识. 固定位置-游戏过程中相机的T ...

  5. 项目游戏开发日记 No.0x000005

    14软二杨近星(2014551622) 还有一周就要交项目了, 看着周围的人也都忙碌了起来, 看着大部分人的项目都已经初具容貌, 我们团队里面也搞得人心惶惶, 一来是, 时间不多了, 还有很多事情要做 ...

  6. 项目游戏开发日记 No.0x000002

    14软二杨近星(2014551622) 项目开发的开始, 到现在已经很久了, 软件工程的课也上了很久了, 不过, 我们的游戏现在依然还没有影子, 只能说...还是啥也不会... 从一开始, 兴致勃勃地 ...

  7. unity游戏开发新手-----2017年展望

    0.希望三月份中旬之前找一份游戏开发的工作,必须转正; 1.希望存款3-4万; 2.今年年底结婚; 3.锻炼身体,体重保持在115斤左右,有胸肌和腹肌;(结婚之前实现) 4.技术方面: 熟练掌握C#语 ...

  8. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生

    一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...

  9. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

随机推荐

  1. CSS角度单位:deg、grad、rad、turn

    1.deg 度(Degress).一个圆共360度 90deg = 100grad = 0.25turn ≍ 1.570796326794897rad -moz-transform: rotate(2 ...

  2. nginx 配置的server_name参数

    nginx中的server_name指令主要用于配置基于名称虚拟主机. 一 匹配顺序,server_name指令在接到请求后的匹配顺序如下: 1.确切的server_name匹配,例如: server ...

  3. GO语言网络编程

    socket编程 Socket是BSD UNIX的进程通信机制,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.Socket可以理解为TCP/IP网络的API,它 ...

  4. 批量更新表注释 mysql

    -- 生成更新语句 SELECT CONCAT( 'ALTER TABLE ', T2.table_name, ' COMMENT ''', T1.TABLE_COMMENT, ''';' ) sql ...

  5. NoSql数据库Redis系列(4)——Redis数据持久化(AOF)

    上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严 ...

  6. T-MAX组--项目冲刺(第二天)

    THE SECOND DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项目冲刺(第二天) 团队名称 T-M ...

  7. cropper手机使用实例

    cropper手机使用实例 一.总结 一句话总结: 启示:还是要多个相关的实例交叉使用,相互印证,查漏补缺,可以更加高效和方便和节约时间 二.Cropper.js从前台到后台的完整实例应用 转自或参考 ...

  8. GROUP_CONCAT 将mysql多条数据合并为一条

    实现将多条数据合并为一条数据,在mysql中可以通过 GROUP_CONCAT 函数实现 上面是潇leader发我的和工作不相关的小小小需求描述,很明显是要把id和name相同的数据合并为一条,下面按 ...

  9. [Java/Reflect]使用反射机制获得一个对象的属性名和属性值

    一个辅助对象,用于给属性排序 class KeyValue implements Comparable<KeyValue>{ String key; Object value; @Over ...

  10. EditText限制输入的几种方式及只显示中文汉字的做法

    最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以 ...