python - pygame,这是使用类的正确方法吗?
问题描述
我最近开始学习课程,我对课程很陌生,所以我的问题是,我是否正确使用它以及使用课程有什么好处,因为我不确定我是否需要它们,但我觉得没有我的代码会感觉冗长和凌乱,如果你能告诉我你如何使用类的例子,我将不胜感激,如果你能包括一个复杂而简单的类例子,我想这将有助于我理解,谢谢!关于此代码的快速说明,这是基于我的其他代码,但这个代码使用的是类。
import pygame
import sys
from pygame.locals import *
pygame.init()
display_w = 800
display_h = 600
window = pygame.display.set_mode((display_w, display_h), HWSURFACE | DOUBLEBUF | RESIZABLE)
pygame.display.set_icon(pygame.image.load("game_icon.png"))
pygame.display.set_caption("Work in progress")
clock = pygame.time.Clock()
background = pygame.image.load("background.png")
class Player(object):
"""The controllable player in game"""
def __init__(self, x, y, width, height, speed):
self.x = x
self.y = y
self.width = width
self.height = height
self.image = pygame.image.load("sprite_sheet.png")
self.speed = speed
def draw(self):
self.sprite = (self.image.subsurface(pygame.Rect(0, 100, 50, 50)))
window.blit(self.sprite, (self.x, self.y))
def movement(self):
self.keys = pygame.key.get_pressed()
if self.keys[pygame.K_LEFT]:
self.x -= self.speed
if self.keys[pygame.K_RIGHT]:
self.x += self.speed
if self.keys[pygame.K_UP]:
self.y -= self.speed
if self.keys[pygame.K_DOWN]:
self.y += self.speed
player = Player(400, 300, 50, 50, 5)
running = True
while running:
window.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == VIDEORESIZE:
screen = pygame.display.set_mode((event.w, event.h), RESIZABLE)
player.draw()
player.movement()
clock.tick(60)
pygame.display.flip()
解决方案
推荐阅读
- mysql - 从满足条件的 MySQL JSON 列中选择行
- flutter - SocketException:操作系统错误:颤动时管道损坏
- html - 使用带有通用元素 html 的 Jaspersoft 中断页面
- javascript - 如何使用不同的数据集多次渲染 docxtemplater
- node.js - 从 node.js 中的 docker 容器备份 MongoDB 数据库
- python - Dataframe:如何将两列与字符串值进行比较?
- blockchain - Substrate 区块链框架中“已提交”和“已完成”交易的区别?
- python - 从 csv 数据在 python 中创建 NetCDF 文件
- c# - webResponse 响应不完整 pdf
- reactjs - 我的默认路由 '/' 即 Home 不适应旧类,即 Navlink 中的 Normal