这里的问题是在titleScreen类中,在start方法中,我在屏幕上设置了开始文本的左上角。但为了做到这一点,我必须得到标题的大小,因为开始文本从标题文本下面开始。但是,当我尝试将y值赋给startPos时,我无法从title()方法引用titley变量。如何从title()方法获取titley的值并在另一个方法中使用它?
import pygame
from pygame import *
import math
import sys
#Presets for window
size=width,height=500,500
Ag=-9.80665
clock = pygame.time.Clock()
white=(255,255,255)
blue=(0,0,255)
gray_bgColor=(190,193,212)
pygame.init()
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Flappy Kid")
score=0
title=True
class titleScreen():
pygame.font.init()
def title(self):
self.titleText="Flappy Game"
self.titlePos=(0,0)
currentFont=pygame.font.SysFont("arialms",30,bold=True,italic=True)
renderTitle=currentFont.render(self.titleText,1,blue,gray_bgColor)
self.titlex,self.titley=currentFont.size(self.titleText)
screen.blit(renderTitle,self.titlePos)
def start(self):
startText="Start Game"
startPos=(0,self.title.titley)
currentFont=pygame.font.SysFont("arialms",25,bold=False,italic=False)
renderStart=currentFont.render(startText,1,blue,gray_bgColor)
startx,starty=currentFont.size(startText)
screen.blit(renderStart,startPos)
'''def detect_click():
for event in pygame.event.get():
if event.type==pygame.MOUSEBUTTONDOWN:
x,y=pygame.mouse.get_pos()
return x,y'''
titleC=titleScreen()
def main():
vY,vX=0,0
x,y=200,100
while True:
clock.tick(30)
if not title:
for event in pygame.event.get():
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_UP:
vY=-10
if y>height-50:
y=100
vY+=1
y+=vY
x+=vX
elif title:
titleC.title()
titleC.start()
pygame.display.flip()
main()