学python从pygame开始

目录

前言

pygame安装


前言

我发布博客仅仅是为了提升自己的学习能力,同时这样有效的记录很多东西,萌新勿喷

 

pygame安装

我是直接在pycharm上面安装的,因为别的我也不太会弄,别的不说了,直接上图:

 

打开pycharm,选择新建

找到设置选项

找到  项目:python中的python解释器,选择小加号

输入pygame点击安装包

然后就安装好了,只要用这个python解释器就行,我这个是中文的python,如果有人是英文的可以先用翻译软件翻译或者汉化,当然我觉得既然用英文的python应该英文就不错

 

制作游戏尝试

咳咳,虽然我还没做好,但是也是在努力制作的过程中,有好多东西都还不会弄,所以用了最浪费资源的做法,总之我也会持续更改这的。

 

先给你们看一下大概效果:

 

做游戏首先需要做一个窗口:

import pygame
import sys


if __name__ == '__main__':
    # 检查python,如果不写后面在弄字体音频之类的可能会出现错误
    pygame.init()
    while True:
        # 制作一个窗口
        screen = pygame.display.set_mode((1024, 512), 0, 32)
        pygame.display.flip()  # 更新全部显示

然后需要设置如何关闭它,我这里弄了一个函数,把这个函数加到while循环里:

def Exit():  # 自定义的关闭函数
    for event in pygame.event.get():  # 用for循环遍历一遍所有的事件
        if event.type == pygame.QUIT:  # 如果有事件的类型和关闭相同
            sys.exit()  # 那么关闭文件

有了窗口和关闭函数,还需要一张背景图片,在根目录放置背景图片,这个也要放到循环里面:

# 添加一张图片作为背景图
    background = pygame.image.load('背景.png')
    background_box = background.get_rect()  # 获取图片的矩形框
    screen.blit(background, background_box)  # 打印背景图片到窗口

还需要一个会跑的人物,我这里弄了一个在网上搜的蜡笔小新,然后又稍微p了一下图:

  蜡笔小新_box = 蜡笔小新.get_rect()
  screen.blit(蜡笔小新, speed1)  # 打印会跑的小新

上面我还没有添加小新的图片,把上面这段代码放到while循环的pygame.display.flip()上面

在站里不动时小新的图片:

def Stand():
    global 蜡笔小新
    if str[pygame.K_RIGHT] == 0 and str[pygame.K_d] == 0 and str[pygame.K_LEFT] == 0 and str[pygame.K_a] == 0:
        蜡笔小新 = pygame.image.load('蜡笔小新\stand\图层 1.png')

向左跑动的图片即效果:

def Left():
    global 蜡笔小新
    global i
    if str[pygame.K_a] != 0 or str[pygame.K_LEFT] != 0:
        if i == 0:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 1.png')
        elif i == 1:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 2.png')
        elif i == 2:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 3.png')
        elif i == 3:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 4.png')
        elif i == 4:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 5.png')
        elif i == 5:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 6.png')
        elif i == 6:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 7.png')
        elif i == 7:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 8.png')
            i = 0
        pygame.time.wait(90)
        speed1[0] -= 20
        i += 1
        global 蜡笔小新_type
        蜡笔小新_type = 'left'

在用上面这段函数之前,要把:

# 检测键盘按键
        str = pygame.key.get_pressed()

这段代码放在while循环里面

还有向右跑动,实际上只改了少许参数:

# 向右移动
def Right():
    global 蜡笔小新
    global i
    if str[pygame.K_d] != 0 or str[pygame.K_RIGHT] != 0:
        if i == 0:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 1.png')
        elif i == 1:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 2.png')
        elif i == 2:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 3.png')
        elif i == 3:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 4.png')
        elif i == 4:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 5.png')
        elif i == 5:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 6.png')
        elif i == 6:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 7.png')
        elif i == 7:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 8.png')
            i = 0   # 图片的序号
        pygame.time.wait(90)    # 暂停90毫秒
        speed1[0] += 20  # x轴移动20像素
        i += 1  # 循环播放图片的序号
        global 蜡笔小新_type    # 小新的类型,在跳跃的时候使用
        蜡笔小新_type = 'right'

还有跳跃时的函数:

def Up(蜡笔小新_type):
    global 蜡笔小新
    global j
    # 当按下上建的时候
    if str[pygame.K_w] != 0 or str[pygame.K_UP] != 0:
        # 判断y轴坐标是否小于50
        if speed1[1] <= 0:
            # 小于50的话给j赋予一个1314这只是一个标志,让后面知道下落
            j = 1314
        # 向左跳的图片
        if 蜡笔小新_type == 'left':
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand_Up\图层 1.png')
            Up_1(j)
        # 向右跳的图片
        elif 蜡笔小新_type == 'right':
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand_Up\图层 2.png')
            Up_1(j)
        # 判断如果左右都没有按的话的图片
        else:
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand\图层 1.png')
            Up_1(j)
    # 在按完上建以后标准下落
    elif speed1[1] < 200:
        speed1[1] += 10
        pygame.time.wait(10)
    # 判断如果在200的值上也就是掉地上了,那么就不下落了
    if speed1[1] >= 200:
          j = 0

上面这段函数里面还包含一个函数,那是一段用来跳跃的函数:

def Up_1(j):
    if speed1[1] >= 200:
        j = 0

    # 判断j如果不等于1314,那就减y轴坐标,相当于跳起来
    if j != 1314:
        speed1[1] -= 50
        # 同时要暂停5毫秒,毕竟程序是有速度的,不能一下子加那么多
        pygame.time.wait(5)
    # 如果等于1314,那就加y轴,相当于下落的时候
    else:
        speed1[1] += 10
        pygame.time.wait(10)
    # 在这个小循环里面判断y轴是否大于等于200,相当于落地的时候,如果是则给j赋予一个不是1314的值即可

大概就写这些,里面有很多BUG

下面是源码:

import pygame
import sys


def Exit():  # 自定义的关闭函数
    for event in pygame.event.get():  # 用for循环遍历一遍所有的事件
        if event.type == pygame.QUIT:  # 如果有事件的类型和关闭相同
            sys.exit()  # 那么关闭文件

# 向右移动
def Right():
    global 蜡笔小新
    global i
    if str[pygame.K_d] != 0 or str[pygame.K_RIGHT] != 0:
        if i == 0:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 1.png')
        elif i == 1:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 2.png')
        elif i == 2:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 3.png')
        elif i == 3:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 4.png')
        elif i == 4:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 5.png')
        elif i == 5:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 6.png')
        elif i == 6:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 7.png')
        elif i == 7:
            蜡笔小新 = pygame.image.load('蜡笔小新\Right\图层 8.png')
            i = 0   # 图片的序号
        pygame.time.wait(90)    # 暂停90毫秒
        speed1[0] += 20  # x轴移动20像素
        i += 1  # 循环播放图片的序号
        global 蜡笔小新_type    # 小新的类型,在跳跃的时候使用
        蜡笔小新_type = 'right'


# 向左移动
def Left():
    global 蜡笔小新
    global i
    if str[pygame.K_a] != 0 or str[pygame.K_LEFT] != 0:
        if i == 0:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 1.png')
        elif i == 1:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 2.png')
        elif i == 2:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 3.png')
        elif i == 3:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 4.png')
        elif i == 4:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 5.png')
        elif i == 5:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 6.png')
        elif i == 6:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 7.png')
        elif i == 7:
            蜡笔小新 = pygame.image.load('蜡笔小新\Left\图层 8.png')
            i = 0
        pygame.time.wait(90)
        speed1[0] -= 20
        i += 1
        global 蜡笔小新_type
        蜡笔小新_type = 'left'


# 跳跃时
def Up(蜡笔小新_type):
    global 蜡笔小新
    global j
    # 当按下上建的时候
    if str[pygame.K_w] != 0 or str[pygame.K_UP] != 0:
        # 判断y轴坐标是否小于50
        if speed1[1] <= 0:
            # 小于50的话给j赋予一个1314这只是一个标志,让后面知道下落
            j = 1314
        # 向左跳的图片
        if 蜡笔小新_type == 'left':
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand_Up\图层 1.png')
            Up_1(j)
        # 向右跳的图片
        elif 蜡笔小新_type == 'right':
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand_Up\图层 2.png')
            Up_1(j)
        # 判断如果左右都没有按的话的图片
        else:
            蜡笔小新 = pygame.image.load('蜡笔小新\Stand\图层 1.png')
            Up_1(j)
    # 在按完上建以后标准下落
    elif speed1[1] < 200:
        speed1[1] += 10
        pygame.time.wait(10)
    # 判断如果在200的值上也就是掉地上了,那么就不下落了
    if speed1[1] >= 200:
          j = 0

def Up_1(j):
    if speed1[1] >= 200:
        j = 0

    # 判断j如果不等于1314,那就减y轴坐标,相当于跳起来
    if j != 1314:
        speed1[1] -= 50
        # 同时要暂停5毫秒,毕竟程序是有速度的,不能一下子加那么多
        pygame.time.wait(5)
    # 如果等于1314,那就加y轴,相当于下落的时候
    else:
        speed1[1] += 10
        pygame.time.wait(10)
    # 在这个小循环里面判断y轴是否大于等于200,相当于落地的时候,如果是则给j赋予一个不是1314的值即可


# 站立不动时
def Stand():
    global 蜡笔小新
    if str[pygame.K_RIGHT] == 0 and str[pygame.K_d] == 0 and str[pygame.K_LEFT] == 0 and str[pygame.K_a] == 0:
        蜡笔小新 = pygame.image.load('蜡笔小新\stand\图层 1.png')


if __name__ == '__main__':
    # 检查python,如果不写后面在弄字体音频之类的可能会出现错误
    pygame.init()

    # 想要窗口一直出现需要一个无限循环
    speed1 = [0, 200]
    # speed = 5
    i = 0
    # n = 0
    蜡笔小新_type = ''  # 判断当前图片朝左还是朝右
    while True:
        # 制作一个窗口
        screen = pygame.display.set_mode((1024, 512), 0, 32)
        # 需要程序检测怎么关闭
        Exit()  # 自定义的关闭函数
        # 检测键盘按键
        str = pygame.key.get_pressed()
        Right()  # 向右移动
        Left()  # 向左移动
        Stand()  # 站立不动时
        Up(蜡笔小新_type)  # 跳跃时

        # 添加一张图片作为背景图
        background = pygame.image.load('背景.png')
        background_box = background.get_rect()  # 获取图片的矩形框
        screen.blit(background, background_box)  # 打印背景图片到窗口

        蜡笔小新_box = 蜡笔小新.get_rect()
        screen.blit(蜡笔小新, speed1)  # 打印会跑的小新

        pygame.display.flip()  # 更新全部显示

后面我还会继续更新,修改bug,尽量做好……

 

资源下载百度网盘

链接:https://pan.baidu.com/s/1BHT4rLvv6wxuDIiltpnMRQ 
提取码:d3lj 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值