一、Pygame库
Pygame是一个利用SDL库写的游戏库,SDL库全名:Simple DirectMedia Layer,据说是SamLantinga写的大牛写的为了让Loki(公司)更好的向linux上移植Windows的游戏,后来倒闭了
SDL是使用C写的,Pygame是Python中的一个常用的库
接下来记录使用Pycharm编写Python3.7的个人版超级玛丽游戏,Pygame更适合于制作2D游戏开发
二、放上代码和暂定的游戏界面
1 import pygame ,sys 2 3 pygame.init() #初始化pygame,为使用硬件做准备 4 size = width,height = 1000,750 #设置整个界面的大小 5 speed = [1,1] 6 BLACK = 2,100,30 7 8 9 screen = pygame.display.set_mode((size)) #创建一个窗口 10 pygame.display.set_caption(" 三川之水") #设置窗口标题 11 12 pygame.mixer.music.load("music/home.mp3") #加载背景音乐 13 pygame.mixer.music.set_volume(1.0) #设置播放的音量,音量的范围为0.0-1.0 14 pygame.mixer.music.play(-1) 15 '''第一个参数为播放次数,如果是-1表示循环播放,省略表示只播放1次。 16 第二个参数和第三个参数分别表示播放的起始和结束位置。 17 ''' 18 19 background = pygame.image.load("image/background.png").convert() #加载和存储图片 20 ball = pygame.image.load(r"image/ball.png") 21 ballrect = ball.get_rect() #获取图片的轮廓大小 22 23 fps = 180 24 myclock = pygame.time.Clock() #控制游戏的帧速率 25 26 27 28 while True: #大循环 29 for event in pygame.event.get(): #获取电脑事件 30 if __name__ == '__main__': 31 if event.type == pygame.QUIT: #若点击退出键 32 sys.exit() #退出游戏见面 33 elif event.type == pygame.KEYDOWN: #检测键盘是否按下 34 if event.key == pygame.K_LEFT: #按左键 35 #speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)* int (speed[0]/abs(speed[0])) 36 if speed[0] >= 0: 37 speed[0] = speed[0] - 1 38 elif speed[0] == 0: 39 speed[0] = -speed[0] 40 else: 41 speed[0] = speed[0] - 1 42 elif event.key == pygame.K_RIGHT: #按右键 43 speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1 44 elif event.key == pygame.K_UP: #按上建 45 speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1 46 elif event.key == pygame.K_DOWN: #按下键 47 speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1])) 48 49 ballrect = ballrect.move(speed[0],speed[1]) #小球移动 50 if ballrect.left < 0 or ballrect.right > #检测边界,超过则反向运动 51 speed[0] = -speed[0] 52 if ballrect.top < 0 or ballrect.bottom > height: 53 speed[1] = -speed[1] 54 55 screen.blit(background,(0,0)) #绘制背景 56 screen.blit(ball,ballrect) #绘制小球 57 pygame.display.update() #刷新下一个画面 58 myclock.tick(fps)