懒得客套,直接步入主题
首先,利用python来做游戏需要用到python中的pygame模块,这个我们在终端cmd中安装
输入:pip install pygame 安装好后我们进入pycharm查询我们有的模块(打开路径:文件-设置)
可以看到我们软件包中有pygame,安装好后我们在python中输入
#调用模块 import pygame
然后我们开始搭建场景
def start(): #游戏页面大小 screen = pygame.display.set_mode((1200, 700), 0, 32)
#游戏名称 pygame.display.set_caption('靓富打僵尸') #调用背景 load后面是你的背景文件路径 background =
pygame.image.load("./daoju/background.png").convert() # 循环每个事件 while True:
screen.blit(background, (0, 0)) # 这个不用管,功能为刷新页面 pygame.display.update() if
__name__ == '__main__': start()
我们运行试试
接下来我们导入人物这部分,在调用模块中导入pygame.locals模块(这个模块的作用是使用各种常量,人物行走就会用到)
#在首行调用模块中添加 from pygame.locals import *
在while循环中添加检测鼠标和键盘事件
# 判断是否退出 for event in pygame.event.get(): if event.type == QUIT:
print("exit") exit() elif event.type == KEYDOWN: keys_pressed =
pygame.key.get_pressed() # 调用键盘,其中K_a中的a可以为任何数(看个人喜好)而后面的left为向左移动 if event.key
== K_a or event.key == K_LEFT: print('left') # 一样 elif event.key == K_d or
event.key == K_RIGHT: print('right') elif event.key == K_w or event.key ==
K_UP: print('up') elif event.key == K_s or event.key == K_DOWN: print('down') #
这个为射击参数,对接玩家子弹参数 elif event.key == K_j: print('j')
运行如下
我们现在做人物的相关参数
新建个python文件 名为plane
import pygame #定义玩家的相关数据 class HeroPlane(object) : def __init__(self, screen)
: # 玩家默认位置 self.x = 50 self.y = 445 # 窗口与玩家 self.screen = screen
self.image_name = "./rwu/hero.gif" self.image =
pygame.image.load(self.image_name).convert() #定义行走变量 def display(self):
self.screen.blit(self.image, (self.x, self.y)) # 移动的速度 xy为方向根据自己游戏画面调 def
move_left(self): self.x -= 10 def move_right(self): self.x += 10 def
move_up(self): self.y -= 10 def move_down(self): self.y += 10
然后我们回到zhuyemian文件中
调用模块的地方中输入调用plane文件
#调用模块 import pygame import time from pygame.locals import * #调用plane文件 from
plane import *
回到 def start(): 中创建一个人物对象
#创建人物对象 hero_plane = HeroPlane(screen)
然后我们在while键盘参数中对接我们人物的各个参数
# 循环每个事件 while True: screen.blit(background, (0, 0)) # 这个不用管,功能为刷新页面
pygame.display.update() #连接plane(新添加) hero_plane.display() # 判断是否退出 for event
in pygame.event.get(): if event.type == QUIT: print("exit") exit() elif
event.type == KEYDOWN: keys_pressed = pygame.key.get_pressed() #
调用键盘,其中K_a中的a可以为任何数(看个人喜好)而后面的left为向左移动 if event.key == K_a or event.key ==
K_LEFT: print('left') #(新添加) hero_plane.move_left() # 一样 elif event.key == K_d
or event.key == K_RIGHT: print('right') #(新添加) hero_plane.move_right() elif
event.key == K_w or event.key == K_UP: print('up') #(新添加) hero_plane.move_up()
elif event.key == K_s or event.key == K_DOWN: print('down') #(新添加)
hero_plane.move_down() # 这个为射击参数,对接玩家子弹参数 elif event.key == K_j: print('j')
#(新添加) pygame.display.update()
运行的时候会有人物闪烁的问题
导入import time 然后再def start 中添加
clock = pygame.time.Clock()
再在while循环中添加刷新帧率
#刷新帧率 60 为60帧 clock.tick(60)
我们运行看看
完美实现人物移动
大家总说来日方长,殊不知世事无常,珍惜当下,做自己想做的事
好啦,第一篇就讲完啦,后续更新子弹和敌人模块(不是不想一次写完,真的太累了这篇有4000字左右,这个游戏我早在一个月前左右就写好了,现在回去看,有些有啥作用我自己都忘记了)
有不懂的评论或者私信
觉得对你有帮助的小伙伴评论下,我就喜欢别人认可我做的东西