IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python游戏制作 -> 正文阅读

[Python知识库]python游戏制作

游戏开发过程

1.用pygame建立一个游戏界面

# 建立一个界面
import pygame
import sys

pygame.init()  # pygame 初始化

pygame.display.set_caption("我的第一个游戏")         # 窗口的标题
screen = pygame.display.set_mode( (500, 500) )    # 创建一个窗口对象 设置参数以元组传入

while True:
    pygame.display.update()                       # 不断重新刷新界面
    for event in pygame.event.get():              # 从pygame的事件队列中获取事件对象
        if event.type == pygame.QUIT:             # pygame.QUIT是一个常量,数值为256,表示事件类型为退出pygame
            pygame.quit()                         # pygame退出,和pygame.init()对应
            sys.exit()                            # 如果系统在pygame.quit()前终止,IDLE会挂起,一般最后调用sys.exit()

界面如图:在这里插入图片描述

2.基本图形的绘制


import pygame
import sys

pygame.init()  # pygame 初始化

size = width, height = 300, 300
pygame.display.set_caption("图形绘制")        # 窗口的名称
screen = pygame.display.set_mode(size)           # 创建一个窗口对象 设置参数以元组传入

# 定义颜色变量
WHITE = pygame.color.Color(255, 255, 255)        # 定义白色常量
BLACK = pygame.color.Color(0, 0, 0, a=255)       # 定义黑色常量 alpha通道默认255,不透明
RED = "#FF0000"                                  # 定义红色        十六进制
GREEN = "0x00FF00"                               # 定义绿色
BLUE = (0, 0, 255)                               # 定义蓝色 也可以是列表[0, 0, 255]

screen.fill(WHITE)                               # 窗口填充白色


while True:
    # 画线 蓝色 起点(150,130) 终点(130,170)
    pygame.draw.line(screen, BLUE, (150, 130), (130, 170))
    # 画线 蓝色 起点(150,130) 终点(170,170)
    pygame.draw.line(screen, BLUE, (150, 130), (170, 170))
    # 画线 蓝色 起点(130,170) 终点(170,170)
    pygame.draw.line(screen, GREEN, (130, 170), (170, 170))
    # 画圆 黑色 圆心:(100,50) ,半径 30
    pygame.draw.circle(screen, BLACK, (100, 50), 30)
    # 画圆 黑色 圆心:(200,50) ,半径 30
    pygame.draw.circle(screen, BLACK, (200, 50), 30)
    # 画正方形 红色 左上方(100,200) 宽 100 高50 边框宽度为2的空心矩形
    pygame.draw.rect(screen, RED, (100, 200, 100, 50), 2)

    for event in pygame.event.get():              # 从pygame的事件队列中获取事件对象
        if event.type == pygame.QUIT:             # pygame.QUIT是一个常量,数值为256,表示事件类型为退出pygame
            pygame.quit()                         # pygame退出,和pygame.init()对应
            sys.exit()                            # 如果系统在pygame.quit()前终止,IDLE会挂起,一般最后调用sys.exit()
    pygame.display.update()                       # 不断重新刷新界面

绘制图形:
在这里插入图片描述

3.实现小车的运动
方式一:

import pygame
import sys

pygame.init()

size = width, height = (400, 600)

pygame.display.set_caption("图像绘制")
screen = pygame.display.set_mode(size)

background = pygame.image.load("AnimatedStreet.png")   # 将图片保持在内存中 绘制背景图面
player = pygame.image.load("Player.png")
x, y = 178, 504                                        # player的位置

FPS = 30                                               # 设置每秒刷新的次数 图像的帧数率
clock = pygame.time.Clock()                            # 返回一个时钟对象


while True:

    screen.blit(background, (0, 0))               # 将图片渲染在指定的位置
    screen.blit(player, (x, y))
    y -= 1


    for event in pygame.event.get():              # 从pygame的事件队列中获取事件对象
        if event.type == pygame.QUIT:             # pygame.QUIT是一个常量,数值为256,表示事件类型为退出pygame
            pygame.quit()                         # pygame退出,和pygame.init()对应
            sys.exit()                            # 如果系统在pygame.quit()前终止,IDLE会挂起,一般最后调用sys.exit()
    pygame.display.update()                       # 不断重新刷新界面
    clock.tick(FPS)                               # 按照指定的更新速率来属性界面,没到时间就让它循环等待

方式二:类的封装:

# -*- codeing = utf-8 -*-
# @Time : 2021/8/8 21:25
# @Author : chao
# @File : 图像运动-类封装.py
# @Software : PyCharm

import pygame
import sys

pygame.init()

size = width, height = (400, 600)

pygame.display.set_caption("图像绘制")
screen = pygame.display.set_mode(size)

# 对游戏角色封装
class Player():
    def __init__(self):
        x, y = (width/2, height/2)                   # 屏幕的中心距离
        self.image = pygame.image.load("Player.png")   # 将图片素材加载到内存
        self.rect = self.image.get_rect(center = (x, y))  # 将rect对象的中心点,定位在(x,y)处
        #self.rect = self.image.get_rect(top = 200, left = 200)   # 默认是定位在(0,0),还可以结合其他rect的属性定位显示位置

    def move(self):
        #self.rect.y -= 1                               # 直接修改rect对象的y坐标
        #self.rect = self.rect.move(0, -1)              # 使用 rect对象的move方法,设定移动增长量,返回移动后的rect对象
        self.rect.move_ip(0, -2)                       # 直接对当前rect对象移动指定数值的位移 负数表示x向左,y向上

background = pygame.image.load("AnimatedStreet.png")   # 将图片保持在内存中 绘制背景图面

FPS = 30                                               # 设置每秒刷新的次数 图像的帧数率
clock = pygame.time.Clock()                            # 返回一个时钟对象

player = Player()                                      # 创建Player的对象,改变图像的所在的位置

while True:

    screen.blit(background, (0, 0))               # 将图片渲染在指定的位置
    screen.blit(player.image, player.rect)        # 将player对象的image 渲染到player中指定的rect区域
    player.move()                                 # 不断的调用move()方法,


    for event in pygame.event.get():              # 从pygame的事件队列中获取事件对象
        if event.type == pygame.QUIT:             # pygame.QUIT是一个常量,数值为256,表示事件类型为退出pygame
            pygame.quit()                         # pygame退出,和pygame.init()对应
            sys.exit()                            # 如果系统在pygame.quit()前终止,IDLE会挂起,一般最后调用sys.exit()
    pygame.display.update()                       # 不断重新刷新界面
    clock.tick(FPS)                               # 按照指定的更新速率来属性界面,没到时间就让它循环等待

图片展现:
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:12:00  更:2021-08-09 10:14:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:47:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码