美文网首页
小飞机(一)

小飞机(一)

作者: 孟哲凡 | 来源:发表于2018-12-27 00:21 被阅读0次

    前言

    这是个糊弄小孩子的东西,所以在书写的时候,有一些偏向性的东西,譬如思路,譬如对代码的解释程度。

    另外,叙述的代码的原版来自github,作者:tasdik。

    前段时间玩无人深空,有一幕,在太空之间穿梭,有很多陨石,用飞船可以攻击,然后得到材料,氚,银,铂这些。。。


    无人深空.jpg

    我们这次要做的跟这个类型一样,也是打陨石的,只是是2d简单版的,效果是这样的。


    开始界面.jpg
    游戏界面.png

    准备

    首先说语言,其实起初打算用java实现一遍的,可是想如果用java的话,有很多关于语言的东西就要解释的多一些,而如果是python的话,就会省事很多。宗旨呢就是注重思路,淡化语法。
    环境无所谓,推荐一个集成环境,例如pycharm这种。
    当然了解python是比较好的,如果不了解也是无所谓的。这都不重要

    分析

    我们现在要去实现这么样一个效果,步骤是怎样的呢?
    通常情况下,我们会:
    1.先把这么大小的区域界面先搭建出来。
    2.然后,把这些素材放置好
    3.让这些素材动起来
    4.增加条件(譬如什么是打中,如果超出屏幕)
    5.对细节的完善
    当然,如果你现在还不打理解第4,5步,也无所谓。前3步是都知道,等我们慢慢顺着他去做,就会发现有不足的地方,这时候就是第4,第5步了。

    开始

    因为是刚开始,所以我们先做第一步,比较简单
    首先导入两个材料包,assets(图片素材),sounds(声音素材),接着我们定义这个界面的大小,我设置成宽480,高600的,当然也可以是别的。
    然后导入pygame框架,python里做游戏用的,里面有很多实用的东西
    使用时候,先init初始化,结束的时候quit释放掉

    #初始化
    pygame.init()
    
    #中间是放自己代码的地方
    
    #释放
    pygame.quit()
    

    接着我们设置屏幕大小,标题,屏幕的内容

    #设置屏幕大小并获取屏幕对象
    screen = pygame.display.set_mode((480, 600))
    #设置屏幕标题
    pygame.display.set_caption("小飞机")
    #从素材库中加载主界面图片
    main_pic = pygame.image.load(path.join(img_dir, "main.png")).convert()
    #按比例将图片缩放成屏幕大小并返回缩放后的图片
    main_pic = pygame.transform.scale(main_pic, (WIDTH, HEIGHT), screen)
    #将图片绘制到屏幕上
    screen.blit(main_pic, (0, 0))
    

    然后我们试着运行,发现屏幕是黑的,闪一下就退了。
    屏幕为什么是黑的呢,是因为我们虽然绘制了图片,但是没有刷新,就还是原来那样的黑乎乎的一片,所以要在后面执行

    #刷新屏幕
    pygame.display.update()
    

    但是,闪退的问题还是没有解决,了解一些电脑的应该知道,我们看到的画面是因为系统在不断刷新的,所以我们的程序要持续,也要不断刷新,所以,我们用一个死循环,把刷新放在里面。这样以后又发现一个问题,就是我们程序虽然不闪退了,但是会失去响应,这是为什么呢,是因为程序不知道我们要干什么也就不响应了,我们要做的就是,获取一下这个程序的事件才可以,至于后续的呢,暂时先捕获一下右上角的退出按钮,这样的我们的程序就可以像其他的一样正常退出了。

    running = True
    while running:
        pygame.display.update()
        #得到并遍历程序的事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
    

    然后,我们公布一下完整的代码,当然后续的代码会变多,完整的代码就会放在网盘里面。

    #python里一个游戏框架
    import pygame
    
    from os import path
    
    #图片加载路径
    img_dir = path.join(path.dirname(__file__), 'assets')
    
    #屏幕宽高
    WIDTH = 480
    HEIGHT = 600
    
    #初始化
    pygame.init()
    #设置屏幕大小并获取屏幕对象
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    #设置屏幕标题
    pygame.display.set_caption("小飞机")
    #从素材库中加载主界面图片
    main_pic = pygame.image.load(path.join(img_dir, "main.png")).convert()
    #按比例将图片缩放成屏幕大小并返回缩放后的图片
    main_pic = pygame.transform.scale(main_pic, (WIDTH, HEIGHT), screen)
    #将图片绘制到屏幕上
    screen.blit(main_pic, (0, 0))
    
    running = True
    while running:
        #刷新屏幕
        pygame.display.update()
        #得到并遍历程序的事件
        for event in pygame.event.get():
            #如果是退出事件,结束循环
            if event.type == pygame.QUIT:
                running = False
    
    #释放
    pygame.quit()
    

    效果是下面这样的:


    第一步.png

    相关文章

      网友评论

          本文标题:小飞机(一)

          本文链接:https://www.haomeiwen.com/subject/ejqllqtx.html