python怎么运行pygame

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么运行pygame相关的知识,希望对你有一定的参考价值。

一、下载Pygame所需的wheel安装包

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame

注意自己的python版本,要与这个对应

例如我是win10 64位下pythton3.6, 则选择这个。

在这里插入图片描述

二、将下载的.whl文件移动到您的python35/Scripts目录中

将下载的.whl文件移动到您的python35/Scripts目录中(如果是tensorflow环境,则在anaconda下的scripts目录下)

cmd进入这个目录下(一般是cd 。。。。)

安装

输入命令:(后面下载的名称自己改一下)

pip3 install pygame-1.9.2a0-cp35-none-win32.whl

如果在最后一步中出现错误,请尝试:

python -m pip install pygame-1.9.2a0-cp35-none-win32.whl

这应该做到这一点。经测试可在Windows 10 64bit上运行。
参考技术A 这个运行的话,它这个怎么运行应该是根据他自己的功能特点和它的功力设置,能运行的应该是按照它的说明专业系统来运行。 参考技术B 这个要想运行的话,必须按照规程去操作,才可以正常运行。 参考技术C 这个运行起来,还是比较麻烦的,需要正确的版本,建议先下载一个正确的软件。 参考技术D 你可以重新下载一个类似的软件不然的话是使用不了的。

Python/Pygame 游戏循环问题/让代码运行

【中文标题】Python/Pygame 游戏循环问题/让代码运行【英文标题】:Python/Pygame Trouble with Game loop/Getting code to run 【发布时间】:2015-04-25 14:22:52 【问题描述】:

在过去的几天里,我一直在为 pong 编写这段代码,并且几乎可以运行它。一切都取决于物体的运动。当 pygame 窗口打开时,屏幕会冻结。我的 main() 似乎有问题,但我对 python/pygame 还是很陌生,不知道哪里出了问题。

import pygame, sys
pygame.init()

SCR_WID, SCR_HEI = 640, 480
class Player():
    def __init__(self):
        self.x, self.y = 16, SCR_HEI/2
        self.x1, self.y1 = SCR_WID-16, SCR_HEI/2
        self.speed = 3
        self.padWid, self.padHei = 8, 64
        self.score = 0
        self.scoreFont = pygame.font.Font("imagine_font.ttf", 64)

    def scoring(self):
            scoreBlit = self.scoreFont.render(str(self.score), 1, (0,0,0))
            screen.blit(scoreBlit, (32, 16))
            if self.score == 10:
                print ("player 1 wins!")
                exit()

    def scoring1(self):
            scoreBlit = self.scoreFont.render(str(self.score), 1, (0,0,0))
            screen.blit(scoreBlit, (SCR_HEI+92, 16))
            if self.score == 10:
                print ("Player 2 wins!")
                exit()

    def movement(self):
            keys = pygame.key.get_pressed()
            if keys[pygame.K_w]:
                self.y -= self.speed
            elif keys[pygame.K_s]:
                self.y += self.speed

            if self.y <= 0:
                self.y = 0
            elif self.y >= SCR_HEI-64:
                self.y = SCR_HEI-64

            keys1 = pygame.key.get_pressed()
            if keys1[pygame.K_UP]:
                self.y1 -= self.speed
            elif keys1[pygame.K_DOWN]:
                self.y1 += self.speed

            if self.y1 <= 0:
                self.y1 = 0
            elif self.y >= SCR_HEI-64:
                self.y1 = SCR_HEI-64

    def draw(self):
        pygame.draw.rect(screen, (0,0,0), (self.x, self.y, self.padWid, self.padHei))
        pygame.draw.rect(screen, (0,0,0), (self.x1, self.y1, self.padWid, self.padHei))



class Ball():
    def __init__(self):
        self.x, self.y = SCR_WID/2, SCR_HEI/2
        self.x1, self.y1 = SCR_WID/2, SCR_HEI/2
        self.speed_x = -3
        self.speed_y = 3
        self.size = 8

    def movement(self):
        self.x += self.speed_x
        self.y += self.speed_y

        if self.y <= 0:
            self.speed_y *= -1
        elif self.y >= SCR_HEI-self.size:
            self.speed_y *= -1

        if self.x <= 0:
            self.__init__()
            enemy.score += 1
        elif self.x >= SCR_WID-self.size:
            self.__init__()
            self.speed_x = 3
            player.score += 1
        for n in range(-self.size, player.padHei):
            if self.y == player.y + n:
                    if self.x <= player.x + player.padWid:
                        self.speed_x *= -1
                        break
            n += 1
        self.x1 += self.speed_x
        self.y1 += self.speed_y

        if self.y1 <= 0:
            self.speed_y *= -1
        elif self.y1 >= SCR_HEI-self.size:
            self.speed_y *= -1

        if self.x1 <= 0:
            self.__init__()
            enemy.score += 1
        elif self.x1 >= SCR_WID-self.size:
            self.__init__()
            self.speed_x = 3
            player.score += 1
        for n in range(-self.size, enemy.padHei):
            if self.y1 == enemy.y1 + n:
                    if self.x1 >= enemy.x1 - enemy.padWid:
                        self.speed_x *= -1
                        break
            n += 1

    def draw(self):
            pygame.draw.rect(screen, (112,138,144), (self.x, self.y, 8, 8))

SCR_WID, SCR_HEI = 640, 480
screen = pygame.display.set_mode((SCR_WID, SCR_HEI))
player = Player() 
ball = Ball()
enemy = Player()


def main():
    running = True
    while running == True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                print ("Game exited by user")
                exit()
            else:
                running = False
    pygame.font.init()
    clock = pygame.time.Clock()
    FPS = 60
    backgroundimage = pygame.image.load("background.png")
    pygame.display.set_caption("Justin's pong")
    ball.movement()
    player.movement()
    enemy.movement()
    position = (0,0)
    screen.fill((0, 0, 0))
    screen.blit(backgroundimage, position)
    ball.draw()
    player.draw()
    player.scoring()
    enemy.draw()
    enemy.scoring1()
    pygame.display.flip()
    clock.tick(FPS)

main()

【问题讨论】:

【参考方案1】:

问题是这段代码:

running = True
while running == True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print ("Game exited by user")
            exit()
        else:
            running = False

您正确获取了事件,但如果没有任何事件(因为一开始没有),您将永远运行,检查事件。

我假设您希望其余代码也在 while 循环中运行,因此您应该缩进它。

【讨论】:

哇,这似乎几乎完全解决了我的问题!现在,当我运行代码时,游戏运行,但它运行的唯一方法是我的鼠标在 pygame 窗口上不断移动。有点奇怪。有什么想法吗? @JustinFarr 去掉运行变量,让循环为真 没关系,我只是解决了我自己的问题。非常感谢您的帮助!

以上是关于python怎么运行pygame的主要内容,如果未能解决你的问题,请参考以下文章

什么是pygame?怎样安装使用?

安装pygame时出现这样是怎么回事?

安装pygame出错怎么办?

python2.5.1应该安装哪个版本的pygame?

Python/Pygame 游戏循环问题/让代码运行

win7系统下运行python3.7的类导入问题