如何从文本文件在pygame屏幕上显示文本?

时间:2017-05-30 16:36:36

标签: python-3.x file text pygame pong

我正在尝试在pygame屏幕中显示来自文本文件的游戏说明。在这一点上,我编写了这个代码:

def instructions():
    screen.fill(TEAL)
    with open("pongInstructions.txt", encoding = 'utf-8') as f:
        for line in f:
            instructText = instructionsFont.render(line, True, WHITE)
            screen.blit(instructText, ((400 - (instructText.get_width()/2)),(300 - (instructText.get_height()/2))))
            pygame.display.update()

当我调用指令功能时,根本没有任何反应。有没有人知道为什么?非常感谢任何帮助!

编辑:

#Imports and Initialize Pygame Screen
import pygame
import sys
import time
import random
import codecs

pygame.init()
screenSize = (800,600)
screen = pygame.display.set_mode((screenSize),0)
pygame.display.set_caption("Tasnim's Pong")

instructionsFile = [line.strip('\n')
    for line in open('pongInstructions.txt', 'r', encoding = 'utf-8').readlines()]
font = pygame.font.SysFont("americantypewriter", 16)

def instructions(screen):
    screen.fill(TEAL)
    for n, line in enumerate(instructionsFile):
        text = font.render(line, 1, WHITE)
        text_rect = text.get_rect()
        text_rect.centerx = screenSize[0]//2
        text_rect.centery = n*25 + 50
        screen.blit(text, text_rect)
        pygame.display.update()

#Define Colours
WHITE = (255,255,255)
BLUE = (0,0,255)
BLACK = (0,0,0)
GRAY = (128, 128, 128)
MAROON = (128, 0, 0)
NAVYBLUE = (0, 0, 128)
OLIVE = (128, 128, 0)
PURPLE = (128, 0, 128)
TEAL = (0,128,128)
PINK = (226,132,164)
MUTEDBLUE = (155,182,203)
PLUM = (221,160,221)

#All Fonts
startscreenTitleFont =  pygame.font.SysFont("americantypewriter", 120)
startscreenPlayerChoiceFont = pygame.font.SysFont("americantypewriter", 60)
startscreenQuitFont = ("americantypewriter", 60)
startscreenCreditsFont = ("americantypewriter", 60)
instructionsFont = pygame.font.SysFont("americantypewriter",60)
quitFont = pygame.font.SysFont("americantypewriter",60)
maingameP1ScoreFont = pygame.font.SysFont("americantypewriter",70)
maingameP2ScoreFont = pygame.font.SysFont("americantypewriter",70)
maingamePlayerOneFont = pygame.font.SysFont("americantypewriter",50)
maingamescoreFont  = pygame.font.SysFont("americantypewriter",25, bold = True)
winnerFont = pygame.font.SysFont("americantypewriter",25)

instructionsFile = [line.strip('\n')
    for line in open('pongInstructions.txt', 'r', encoding = 'utf-8').readlines()]
font = pygame.font.SysFont("americantypewriter", 16)



#Introduction Screen
def startscreen():
    go = True
    choice = 1

    screen.fill(MUTEDBLUE)

    pygame.display.update()
    pongTitle = startscreenTitleFont.render("Pong", True, WHITE)
    screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0))

    playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE)
    screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160))

    playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE)
    screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275))

    instructionsTitle = instructionsFont.render("How To Play", True, WHITE)
    screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390))

    quitgameTitle = quitFont.render("Quit", True, WHITE)
    screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495))


    pygame.display.update()

#Choices for Introduction Screen
    while go:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                go = False

            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    if choice != 1:
                        choice = choice - 1
                elif event.key == pygame.K_DOWN:
                    if choice != 4:
                        choice = choice + 1

                elif event.key == pygame.K_RETURN:
                    if choice == 1:
                        playTwoPlayer()
                    elif choice == 2:
                        playOnePlayer()                        
                    elif choice == 3:
                        instructions()
                    elif choice == 4:
                        quitGame()

        if choice == 1:
            screen.fill(MUTEDBLUE)

            pongTitle = startscreenTitleFont.render("Pong", True, WHITE)
            screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0))

            playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, NAVYBLUE)
            screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160))

            playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE)
            screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275))

            instructionsTitle = instructionsFont.render("How To Play", True, WHITE)
            screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390))

            quitgameTitle = quitFont.render("Quit", True, WHITE)
            screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495))

        elif choice == 2:
            screen.fill(MUTEDBLUE)

            pongTitle = startscreenTitleFont.render("Pong", True, WHITE)
            screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0))

            playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE)
            screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160))

            playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, NAVYBLUE)
            screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275))

            instructionsTitle = instructionsFont.render("How To Play", True, WHITE)
            screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390))

            quitgameTitle = quitFont.render("Quit", True, WHITE)
            screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495))

        elif choice == 3:
            screen.fill(MUTEDBLUE)

            pongTitle = startscreenTitleFont.render("Pong", True, WHITE)
            screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0))

            playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE)
            screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160))

            playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE)
            screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275))

            instructionsTitle = instructionsFont.render("How To Play", True, NAVYBLUE)
            screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390))

            quitgameTitle = quitFont.render("Quit", True, WHITE)
            screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495))

        if choice == 4:
            screen.fill(MUTEDBLUE)

            pongTitle = startscreenTitleFont.render("Pong", True, WHITE)
            screen.blit(pongTitle,((400 - (pongTitle.get_width()/2)),0))

            playerchoiceTitle = startscreenPlayerChoiceFont.render("Two Player Game", True, WHITE)
            screen.blit(playerchoiceTitle, ((400 - (playerchoiceTitle.get_width()/2)),160))

            playerchoice2Title = startscreenPlayerChoiceFont.render("One Player Game", True, WHITE)
            screen.blit(playerchoice2Title, ((400 - (playerchoice2Title.get_width()/2)),275))

            instructionsTitle = instructionsFont.render("How To Play", True, WHITE)
            screen.blit(instructionsTitle, ((400 - (instructionsTitle.get_width()/2)),390))

            quitgameTitle = quitFont.render("Quit", True, NAVYBLUE)
            screen.blit(quitgameTitle, ((400 - (quitgameTitle.get_width()/2)),495))

            pygame.display.update()

        pygame.display.update()

#Two Player Game
def playTwoPlayer():
    screen.fill(MUTEDBLUE)
    play = True
    startballSPACE = True

#Two Player Game- Set Variables
    playeroneScore = 0
    playertwoScore = 0

    ballx = 400
    bally = 350
    balldx = 0
    balldy = 0
    xOne = 775
    yOne = 275 
    xTwo = 0
    yTwo = 275
    dyOne = 0
    dyTwo = 0
    heightPaddleoneandtwo = 150
    paddleheight = 150

    go = True
    while go:

        if playeroneScore == 3:
            winnerPlayerOne()

        if playertwoScore == 3:
            winnerPlayerTwo()

        balldxdir = random.choice([-5,5])
        balldydir = random.choice([-5,5])

        for event in pygame.event.get():

            if event.type == pygame.QUIT:
                quitGame()

            elif event.type == pygame.KEYDOWN:

 #Controls for player one- Up and Down key               
                if event.key == pygame.K_UP:
                    dyOne = -10
                    directiony = 3
                elif event.key == pygame.K_DOWN:
                    dyOne = 10
                    directiony = 4

 #Controls for player two- W and S key 
                elif event.key == pygame.K_w:
                    dyTwo = -10
                    directionyTWO = 2
                elif event.key == pygame.K_s:
                    dyTwo = 10
                    directionyTWO = 1
#Controls to quit
                elif event.key == pygame.K_q:
                    startscreen()

#Controls to start game (press space bar)
                elif startballSPACE == True:
                    if event.key == pygame.K_SPACE:
                        play = True
                        balldx = balldxdir
                        balldy = balldydir
                        startballSPACE = False

            if event.type == pygame.KEYUP:

                if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    dyOne = 0
                    directiony = 0

                elif event.key == pygame.K_w or event.key == pygame.K_s: 
                    dyTwo = 0
                    directionyTWO = 0

        screen.fill(MUTEDBLUE)

#Paddle Positioning
        yOne = yOne + dyOne
        yTwo =yTwo + dyTwo

#Screen Top and Bottom Collision Check       
        if yOne > (600 - heightPaddleoneandtwo) and directiony == 4:
            dyOne = 0
            yOne = (600 - heightPaddleoneandtwo)

        if yOne < 100 and directiony == 3:
            dyOne = 0
            yOne = 100

        if yTwo > (600 - heightPaddleoneandtwo) and directionyTWO == 1:
            dyTwo = 0
            yTwo = (600 - heightPaddleoneandtwo)

        if yTwo < 100 and directionyTWO == 2:
            dyTwo = 0
            yTwo = 100

#Makes Ball Bounce in opposite direction
        if play == True:
            if ballx == xOne and bally <= (yOne + heightPaddleoneandtwo) and bally >= yOne:
                balldx = -balldx

#Makes Paddle Shorter on collisions with ball (makes game tougher)
                if heightPaddleoneandtwo >= 10:
                    heightPaddleoneandtwo = heightPaddleoneandtwo - 7
                else:                   
                    heightPaddleoneandtwo = heightPaddleoneandtwo

#Makes Ball Bounce in opposite direction            
            elif bally >= 580:
                balldy = -balldy
            elif ballx == (xTwo + 25) and bally <= (yTwo + heightPaddleoneandtwo) and bally >= yTwo:
                balldx = -balldx

#Makes Paddle Shorter on collisions with ball (makes game tougher)
                if heightPaddleoneandtwo >= 10:
                    heightPaddleoneandtwo = heightPaddleoneandtwo - 7
                else:
                    heightPaddleoneandtwo = heightPaddleoneandtwo

            elif bally <= 110:
                balldy = -balldy

            elif ballx<0 or ballx>800:

#Adds score if ball passes paddle                
                 if ballx>800:
                      playeroneScore = playeroneScore + 1
                      startballSPACE = True
                 elif ballx < 0:
                      startballSPACE = True
                      playertwoScore = playertwoScore + 1
                 ballx = 400
                 bally = 350
                 balldx = 0
                 balldy = 0
                 yOne = 275
                 y2Two = 275
                 heightPaddleoneandtwo = 150
                 play = False

            ballx = ballx + balldx
            bally = bally - balldy

#Draw all screen components
        pygame.draw.rect(screen, WHITE,(xOne, yOne, 25, heightPaddleoneandtwo),0)
        pygame.draw.rect(screen, WHITE,(xTwo, yTwo, 25, heightPaddleoneandtwo),0)

        pygame.draw.circle (screen, WHITE, (ballx,bally), 10, 0)

        textScore = maingamescoreFont.render("Score", True, WHITE)
        screen.blit(textScore, (((800/2)-(textScore.get_width()/2),0)))

        textPlayeroneScore = maingameP1ScoreFont.render(str(playeroneScore), True, WHITE)
        screen.blit(textPlayeroneScore, (0,0))

        textPlayertwoScore = maingameP2ScoreFont.render(str(playertwoScore), True, WHITE)
        screen.blit(textPlayertwoScore, ((800 - textPlayertwoScore.get_width()),0))

        pygame.draw.rect (screen, WHITE, (0,90,800,10),0)

        pygame.draw.rect (screen, WHITE, (395,112,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,162,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,212,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,262,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,312,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,362,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,412,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,462,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,512,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,562,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,612,10,25),0)

        pygame.draw.rect (screen, WHITE, (45,0,3,100),0)
        pygame.draw.rect (screen, WHITE, (752,0,3,100),0)

        playerOneText = maingamePlayerOneFont.render("Player 1", True, WHITE)
        playerTwoText = maingamePlayerOneFont.render("Player 2", True, WHITE)
        screen.blit(playerOneText, (70,15))
        screen.blit(playerTwoText, (525,15))

        pygame.display.update()

def instructions():
    screen.fill(TEAL)
    for n, line in enumerate(instructionsFile):
        text = font.render(line, 1, WHITE)
        text_rect = text.get_rect()
        text_rect.centerx = screenSize[0]//2
        text_rect.centery = n*25 + 50
        screen.blit(text, text_rect)
        pygame.display.update()

def winnerPlayerOne():
    screen.fill(TEAL)
    winnerP1Message = winnerFont.render("Congrats Player 1. You Win! Press 'c' to continue", True, WHITE)
    screen.blit(winnerP1Message, ((400 - (winnerP1Message.get_width()/2)),(300 - (winnerP1Message.get_height()/2))))
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quitGame()               
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_c:
                startscreen()

def winnerPlayerTwo():
    screen.fill(TEAL)
    winnerP2Message = winnerFont.render("Congrats Player 2. You Win! Press 'c' to continue", True, WHITE)
    screen.blit(winnerP2Message, ((400 - (winnerP2Message.get_width()/2)),(300 - (winnerP2Message.get_height()/2))))
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quitGame()               
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_c:
                startscreen()

def CPUwinner():
    screen.fill(TEAL)
    computerWinner = winnerFont.render("Better luck next time... The computer has won! Press 'c' to continue", True, WHITE)
    screen.blit(computerWinner, ((400 - (computerWinner.get_width()/2)),(300 - (computerWinner.get_height()/2))))
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quitGame()               
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_c:
                startscreen()

def quitGame():
    pygame.quit()
    sys.exit()

def playOnePlayer():
    screen.fill(MUTEDBLUE)
    play = True
    startballSPACE = True

#One Player Game- Set Variables
    playeroneScore = 0
    playertwoScore = 0

    ballx = 400
    bally = 350
    balldx = 0
    balldy = 0
    xOne = 775
    yOne = 275 
    xTwo = 0
    yTwo = 275
    dyOne = 0
    dyTwo = 0
    heightPaddleoneandtwo = 150
    paddleheight = 150

    go = True
    while go:

        if playeroneScore == 3:
            winnerPlayerOne()

        if playertwoScore == 3:
            CPUwinner()

        balldxdir = random.choice([-5,5])
        balldydir = random.choice([-5,5])

        for event in pygame.event.get():

            if event.type == pygame.QUIT:
                quitGame()

            elif event.type == pygame.KEYDOWN:

 #Controls for player one- Up and Down key               
                if event.key == pygame.K_UP:
                    dyTwo = -10
                    directiony = 3
                elif event.key == pygame.K_DOWN:
                    dyTwo = 10
                    directiony = 4

#Controls to quit
                elif event.key == pygame.K_q:
                    startscreen()

#Controls to start game (press space bar)
                elif startballSPACE == True:
                    if event.key == pygame.K_SPACE:
                        play = True
                        balldx = balldxdir
                        balldy = balldydir
                        startballSPACE = False

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    dyTwo = 0
                    directionyTWO = 0

        screen.fill(MUTEDBLUE)

#Paddle Positioning
        yTwo = yTwo + dyTwo
        yOne = bally - (heightPaddleoneandtwo/2)

#Screen Top and Bottom Collision Check       
        if yOne > (600 - heightPaddleoneandtwo):
            dyOne = 0
            yOne = (600 - heightPaddleoneandtwo)

        if yOne < 100:
            dyOne = 0
            yOne = 100

        if yTwo > (600 - heightPaddleoneandtwo) and directiony == 4:
            dyTwo = 0
            yTwo = (600 - heightPaddleoneandtwo)

        if yTwo < 100 and directiony == 3:
            dyTwo = 0
            yTwo = 100

#Makes Ball Bounce in opposite direction
        if play == True:
            if ballx == xOne and bally <= (yOne + heightPaddleoneandtwo) and bally >= yOne:
                balldx = -balldx

#Makes Paddle Shorter on collisions with ball (makes game tougher)
                if heightPaddleoneandtwo >= 10:
                    heightPaddleoneandtwo = heightPaddleoneandtwo - 7
                else:                   
                    heightPaddleoneandtwo = heightPaddleoneandtwo                    

#Makes Ball Bounce in opposite direction                        
            elif bally >= 580:
                balldy = -balldy

            elif ballx == (xTwo + 25) and bally <= (yTwo + heightPaddleoneandtwo) and bally >= yTwo:
                balldx = -balldx

#Makes Paddle Shorter on collisions with ball (makes game tougher)                
                if heightPaddleoneandtwo >= 10:
                    heightPaddleoneandtwo = heightPaddleoneandtwo - 7
                else:
                    heightPaddleoneandtwo = heightPaddleoneandtwo

            elif bally <= 110:
                balldy = -balldy

            elif ballx<0 or ballx>800:

#Adds score if ball passes paddle                
                 if ballx>800:
                      playeroneScore = playeroneScore + 1
                      startballSPACE = True
                 elif ballx < 0:
                      startballSPACE = True
                      playertwoScore = playertwoScore + 1
                 ballx = 400
                 bally = 350
                 balldx = 0
                 balldy = 0
                 yOne = 275
                 y2Two = 275
                 heightPaddleoneandtwo = 150
                 play = False

            ballx = ballx + balldx
            bally = bally - balldy


#Draw all screen components
        pygame.draw.rect(screen, WHITE,(xOne, yOne, 25, heightPaddleoneandtwo),0)
        pygame.draw.rect(screen, WHITE,(xTwo, yTwo, 25, heightPaddleoneandtwo),0)

        pygame.draw.circle (screen, WHITE, (ballx,bally), 10, 0)

        textScore = maingamescoreFont.render("Score", True, WHITE)
        screen.blit(textScore, (((800/2)-(textScore.get_width()/2),0)))

        textPlayeroneScore = maingameP1ScoreFont.render(str(playeroneScore), True, WHITE)
        screen.blit(textPlayeroneScore, (0,0))

        textPlayertwoScore = maingameP2ScoreFont.render(str(playertwoScore), True, WHITE)
        screen.blit(textPlayertwoScore, ((800 - textPlayertwoScore.get_width()),0))

        pygame.draw.rect (screen, WHITE, (0,90,800,10),0)

        pygame.draw.rect (screen, WHITE, (395,112,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,162,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,212,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,262,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,312,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,362,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,412,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,462,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,512,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,562,10,25),0)
        pygame.draw.rect (screen, WHITE, (395,612,10,25),0)

        pygame.draw.rect (screen, WHITE, (45,0,3,100),0)
        pygame.draw.rect (screen, WHITE, (752,0,3,100),0)

        playerOneText = maingamePlayerOneFont.render("Player 1", True, WHITE)
        playerTwoText = maingamePlayerOneFont.render("CPU", True, WHITE)
        screen.blit(playerOneText, (70,15))
        screen.blit(playerTwoText, (630,15))

        pygame.display.update()

startscreen()

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,但是screen.blit需要一个矩形对象和textprite,这个对象用于定义精灵的大小和位置。此外,你需要为每一行提供它自己的x或y坐标(否则它们都将被绘制在彼此之上)解决这个问题的一种方法是使用for n, line in enumerate(f)这将给你一个索引值线,称为n。 如果使用枚举并删除当前的screen.blit语句并将其替换为此块,它应该可以工作:

    text_rect = instructText.get_rect()
    text_rect.centerx = SCREENSIZE[0]//2
    text_rect.centery = n*25 + 50
    screen.blit(text, text_rect)

这里你通过调用它的get_rect()方法得到文本精灵的矩形对象,然后将它的中心x坐标设置为屏幕的中心(我用一个容器来保持屏幕大小),然后设置它中心y坐标为25 *数组中的行放置+ 50个像素的填充,最后使用screen.blit(text, text_rect)

将其绘制到屏幕上

我使用自定义字体制作了一个工作示例,您可以看到它here

在之前的项目中,我也为这样的任务创建了一个对象,欢迎您使用,或者根据需要复制它,您可以找到它here

无论如何,我希望它有所帮助,编码很快。

编辑:

刚刚接受了你的代码,从我可以看到你的代码目前什么也没做:) 你可以在sartscreen()函数中定义你想要的行为但是从不调用函数,因此没有任何反应,这是你的主要问题,幸运的是它很容易解决,只需调用文档底部的函数就像这样startscreen(screen)

但等等?您会注意到我已经将屏幕对象添加到此函数调用中,这是因为您需要将您的函数作为屏幕对象的引用,否则它不知道您谈论的“哪个”屏幕对象,您需要使用任何使用屏幕对象的函数执行此操作,但是您还需要告诉函数期望参数,因此当您定义startcreen函数和指令函数时,还需要添加屏幕对象,如此def startscreen(screen):def instructions(screen):现在,您的函数在调用screen.fill(COLOR)screen.blit(text, text_rect)

时知道您在说什么

除此之外,这只是一个小细节的问题,但在应用这两个更改后,您的菜单似乎对我在python 3.5上工作,但是我建议你看看Clock object以及限制你的帧率(否则游戏将在快速计算机上超快速运行)