用户:天上的流星_tianqiVirus查看:25 回复:11 评论:25 创建时间:2019-05-18T22:32:23
教你用pygame开发游戏
今日游戏:飞机大战(自创)
本文为pygame零基础向,非python零基础向
请先安装python(https://shequ.codemao.cn/download)
为了使帖子多点水分我决定不罗嗦直接开始
pygame是python的一个第三方库,使用前要先安装
按下windows+r
输入cmd打开命令行界面
输入以下命令
pip install pygame
耐心等待安装直到出现Successfully
说明安装成功
如果你电脑上有sublime那么可以将你的代码写在sublime上
如果没有,请新建文本文档,将其拓展名改为.py,再用python IDLE或海龟(不推荐)打开
现在请输入以下代码(功能在注释里):
import pygame
import random #随机数
pygame.init() #初始化pygame
screen = pygame.display.set_mode((338,492))#设置屏幕大小
pygame.display.set_caption("飞机大战")#设置屏幕标题
keepGoing=True #控制程序持续运行
while keepGoing:
for event in pygame.event.get():#检测鼠标和键盘按下,移动之类的事件
if event.type == pygame.QUIT: #检测是否按下关闭键
keepGoing = False #如果是就退出循环
pygame.quit() #退出pygame
完成后运行(sublime按ctrl+B,IDLE按F5)
会出现长不长扁不扁的界面:
这就说明你成功了
那,加上背景怎么样?
在你的代码所在文件夹(我的是fly)下创建assets文件夹
在assets文件夹下创建image文件夹
把背景放在image文件夹下
背景图片在编程猫图形化编程里有这个素材,弄下来
可以进行裁剪,弄到分辨率为338,492为止
在代码 pygame.display.set_caption("飞机大战") 后面加上这个
background_1=pygame.image.load("assets/image/background.png")
background_2=pygame.image.load("assets/image/background.png")
这个load就是把图片转换成pygameSurface,简单点说就是你想要放图片在上面你就先写这行
注意,load内的文本要和图片路径一致
然后在代码 keepGoing = False 后面加上这个
screen.blit(background1,(0,0))
screen.blit(background2,(0,0))
pygame.display.update()
blit是把图片显示在屏幕上,括号内的数字为坐标
update是对屏幕更新,你不加就只会看到一张图片,没有动画效果(后面会弄)
注意,这行代码是一格缩进(你原封不动照搬应该没问题)
运行成这样
但是,更完善一点的话背景是会不断往下移动的
这就涉及到坐标了
在pygame中,左上角为零坐标
往下y坐标增加,往右x坐标增加,往上和往左反之
想要设计出流动的样式,思路是这样的:
背景1和背景2一起往下移动
当背景1完全掉到底部看不见时,就移动到背景2的上面
当背景2完全掉到底部看不见时,就移动到背景1的上面
用这样的思路,我们可以这样改
在代码 keepGoing = True 后面加上这个
background_y = 0
在代码 while keepGoing: 后面加上这个
background_y+=1
在代码 keepGoing = False 后面加上这个
if background_y == 492:
background_y = 0
把代码 screen.blit(background1,(0,0)) screen.blit(background2,(0,0)) 改成这个
screen.blit(background_1,(0,background_y))
screen.blit(background_2,(0,background_y-492))
你再根据之前的思路对照代码想想看,你就能明白,这个为什么能动起来了
最终代码为:
import pygame
import random #随机数
pygame.init() #初始化pygame
screen = pygame.display.set_mode((338,492))#设置屏幕大小
pygame.display.set_caption("飞机大战")#设置屏幕标题
background_1=pygame.image.load("assets/image/background.png")
background_2=pygame.image.load("assets/image/background.png")
keepGoing=True #控制程序持续运行
import pygame
import random #随机数
pygame.init() #初始化pygame
screen = pygame.display.set_mode((338,492))#设置屏幕大小
pygame.display.set_caption("飞机大战")#设置屏幕标题
background_1=pygame.image.load("assets/image/background.png")
background_2=pygame.image.load("assets/image/background.png")
keepGoing=True #控制程序持续运行
background_y = 0
while keepGoing:
background_y+=1
for event in pygame.event.get():#检测鼠标和键盘按下,移动之类的事件
if event.type == pygame.QUIT: #检测是否按下关闭键
keepGoing = False #如果是就退出循环
if background_y == 492:
background_y = 0
screen.blit(background_1,(0,background_y))
screen.blit(background_2,(0,background_y-492))
pygame.display.update()
pygame.quit() #退出pygame
这样,我们这一次的任务就完成了
想要继续学习pygame和游戏制作的请关注
id:天上的流星
本帖内的所有代码,思想仅供参考,请勿用于商业盈利用途
小驯鹿LR我使用pycharm写的代码,运行后它说
<form id="myform" action="getTranslate.php" method="post" name="myform"> 第4行,在< module >中 pygame.init() #初始化pygame 属性错误:模块“pygame”没有属性“init” 是什么鬼 </form>点赞0
评论
import pygame
import sys
import time
import random
from pygame.locals import *
Y速度 = 0
得分 = 0
pygame.init()
screen = pygame.display.set_mode((914,527))
pygame.display.set_caption("Flappy Bird")
sky=pygame.image.load(r"assets\image\Fappy Bird\under the pillars.jpg")
keepGoing = True
sky_y = 20
sky_x = 20
while keepGoing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
pygame.display.update()
pygame.quit()
@小鹿工作室_天上的流星
点赞0
评论
飞火天703import pygame import random # 随机数
pygame.init() # 初始化pygame screen = pygame.display.set_mode((338, 492)) # 设置屏幕大小 pygame.display.set_caption("飞机大战") # 设置屏幕标题 background_1 = pygame.image.load("C:\\Users\\Administrator\\新建文件夹\\z.png") background_2 = pygame.image.load("C:\\Users\\Administrator\\新建文件夹\\z.png")
keepGoing = True # 控制程序持续运行
while keepGoing: for event in pygame.event.get(): # 检测鼠标和键盘按下,移动之类的事件 if event.type == pygame.QUIT: # 检测是否按下关闭键 keepGoing = False # 如果是就退出循环 screen.blit(background1, (0, 0)) screen.blit(background2, (0, 0))
pygame.display.update()
pygame.quit() # 退出pygame 报错了
点赞0
评论