Python实践——利用pygame构建一个游戏初始界面(一)

学了一段时间的python,还是需要一些实践环节才能深刻理解,毕竟是个刚入门的小白,就先做点简单的小游戏项目来给自己一些鼓励吧,哈哈哈,不说了,上菜。

  • 创建一个背景为蓝色的python窗口
    首先利用pycharm创建一个项目文件,命名方式最好取与所做项目相关的,见名知意。
    先创建一个空的pygame窗口并设置其背景色(背景色可以自定义,颜色的RGB通过百度获取)

main_color.py

#导入模块sys和pygame
import sys
import pygame

def run_game():
    pygame.init()#初始化背景设置
    screen = pygame.display.set_mode((800,600))
    pygame.display.set_caption('blue shy')
    bg_color = (135,206,235)#设置背景色,天青蓝

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:#检测玩家单击游戏窗口关闭按钮
                sys.exit()#退出游戏
        #每次循环时都重绘屏幕
        screen.fill(bg_color)
        #让最近绘制的屏幕可见
        pygame.display.flip()

run_game()

方法pygame.event.get()是用来检测用户事件,判断用户进行的那些操作。
方法screen.fill() 使用背景色填充屏幕。
代码包含了以下几个过程:

  1. 模块的导入(我们在下面游戏设置中需要使用的模块,在这里有两个,模块pygame包含开发游戏所需的功能,模块sys用来退出游戏)
  2. 初始化游戏并创建屏幕对象(设置屏幕属性)
  3. 开启游戏循环(检测用户操作,更新屏幕)

Python实践——利用pygame构建一个游戏初始界面(一)_第1张图片
结果如图所示,窗口的大小可以根据自己的需要自己设定。
如果在后面还有很多功能需要添加,就可以考虑创建一些类,分别存放不同的功能,这样在需要大量功能修改的时候才不会显得杂乱,代码的可读性也更强。在这里因为不需要实现大量的功能,就不用创建单独的类来存放代码。

  • 将一个图像放在屏幕中央,并将背景色设置为相同
    在屏幕中添加一个图像,创建一个ship类,用来管理图像的设置,看代码。
    ship.py
import pygame

class Ship():
    def __init__(self, screen):
        '''初始化图像并设置其初始位置'''
        self.screen = screen
        #注:定义方法__init__()。(包含两个形参:self, screen 。方法__init__()接受这些形参的值,并将他们存储在根据这个类创建的实例属性中)

        #加载图像并获取图像和屏幕的外接矩形
        self.image = pygame.image.load("C:\python项目文件\练习001\images\Bee.bmp")
        self.image_rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        #在指定位置放置飞船
        self.image_rect.centerx = self.screen_rect.centerx
        self.image_rect.centery = self.screen_rect.centery

    def blitme(self):
        '''在指定位置绘制图像'''
        self.screen.blit(self.image, self.image_rect)#定义方法blitme(),根据self.image_rect 指定的位置将图像绘制到屏幕上

注:定义方法__init__()。(包含两个形参:self, screen 。方法__init__()接受这些形参的值,并将他们存储在根据这个类创建的实例属性中),__ 是两条下划线,最初只打了一条,找了挺久的错误。

pygame中,原点(0,0)位于屏幕左上角。
如上,通过在ship类的代码设置,图像的基本位置已经设定好了,接下来只需在main_color.py中更新代码就可实现功能。
以下是更新好了的代码文件:更新的位置后面有#***

import sys
import pygame
from ship import Ship#***

def run_game():
    pygame.init()
    screen = pygame.display.set_mode((400,300))
    pygame.display.set_caption('blue shy')
    #创建图像
    ship = Ship(screen)#***
    bg_color = (135,206,235)#设置背景色,天青蓝

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:#检测玩家单击游戏窗口关闭按钮
                sys.exit()#退出游戏
        #每次循环时都重绘屏幕
        screen.fill(bg_color)
        ship.blitme() #***
        #让最近绘制的屏幕可见
        pygame.display.flip()

run_game()

从这两个小的功能实现中,我们使用了很多pygame模块中的方法,直接调用模块内部已经设置好的方法来实现功能,的确提供了不少便利,所以想要自己写一个复杂的游戏时,对各个模块以及各个方法的功能作用的了解是必不可少的,当然,写的多了,也自然就会了。
来看一下效果图:
Python实践——利用pygame构建一个游戏初始界面(一)_第2张图片
图像居中,背景色没调,选图的时候如果有背景是透明的应该效果会更好,图片格式要位图(也就是后缀是.bmp)。当然,图片的上下左右移动也可以实现,这里就不一一写出来了,后面更新的博客中会说到,其实写的这些博客也没有技术水平,只是当做个笔记顺带加上一些自己的理解,方便以后查阅,顺带可以加深印象。
独乐乐,不如众乐乐:写是乐,评是乐,看是乐,乐最重要。

你可能感兴趣的:(Python学习之小项目,游戏,python,pygame,游戏开发)