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

最新文章

  1. mysql通过sql语句如何批量去掉某一个表中某一个字段的下面的相同部分字符串
  2. hive streaming 使用shell脚本
  3. Qt之QNetworkInterface
  4. 宏基5750G 不能用内置无线网卡上网
  5. 纯原生js移动端城市选择插件
  6. Codeforces548D:Mike and Feet(单调栈)
  7. 媲美jQuery的JS框架----AngularJS(二)
  8. 【BZOJ2002】弹飞绵羊(Link-Cut Tree)
  9. [boost] Windows下编译
  10. nginx平台初识(二) 浏览器 HTTP 协议缓存机制详解
  11. Linux基本命令操作
  12. java学习笔记04-基本数据类型
  13. 记一次用express手写博客
  14. EasyWeChat使用(laravel框架下)
  15. 在vue项目中使用sass
  16. [UE4]自定义结构体、类、数据表
  17. How to make MySQL handle UTF-8 properly
  18. MySQL 修改数据
  19. 01-03-01【Nhibernate (版本3.3.1.4000) 出入江湖】id标签的unsaved-value属性
  20. rabbitmq文章源

热门文章

  1. avalon结合原生js tab切换
  2. 【opencv C++ linux】linux下编译含opencv的C++代码
  3. python 的小技巧之统计list里面元素的个数
  4. Promethues实战-简易教程系列
  5. [RK3399] ES8316+NS4150 播放视频只有背景音,播放歌曲有的有声音,有的无声音
  6. 全新的Unity跨平台开发 IDE JetBrains Rider 2019.2 x64特别版下载
  7. 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
  8. futex的设计与实现
  9. [原]error LNK2005:&quot;XXX已经在 XXX.obj 中定义 使用 /FORCE(强制文件输出)暴力解决
  10. Python3入门(十三)——常用内置模块之集合模块collections