关于pycharm使用pygame库报错问题的解决方案

关于pycharm使用pygame库报错问题的解决方案


前言

前些时间没事做自学python,想要运行一些大佬的游戏代码,在安装了pygame库的前提下,一直运行报错。网上参考了很多文章,终于解决了。


提示:以下是本篇文章正文内容,下面案例可供参考

一、python、pycharm版本

我刚开始用的是pycharm2017,后来以为是版本问题,换了pycharm2020,依旧报错。python为python3.9
(如图)
在这里插入图片描述

二、如何安装第三方库,以及pycharm如何设置解释器

1.安装第三方库

上图
点击 文件 —> 设置
在这里插入图片描述
点击 项目 Project Interpreter 点击右边的加号
(上方红框处即为解释器版本)
在这里插入图片描述输入想要安装的库的名字,点击install package,等待安装成功即可。
在这里插入图片描述

2.添加新的解释器

点击设置图标,点击add,即可添加新的解释器

在这里插入图片描述

三、为何安装了相应的库,依旧会报错

参考了很多博客,得出结论:
**
pygame库与python3.9不兼容,建议安装python3.7.5及以下版本(后来我安装了python3.7.0 可以运行)**

但是!!!有些小伙伴可能安装了python3.7后运行仍会报错
在这里插入图片描述
报错原因:
由于pygame安装的路径,和pycharm的项目文件没有在一个文件夹下
解决方案:
只需在新建项目时勾选该选项:inherit global site-packages
在这里插入图片描述
就可以啦

在这里插入图片描述

附:同一台计算机可以下载两个不同版本的python

写在最后: 这是我第一次写博客,对这方面的知识也不是很了解,只是这个问题困扰我许久,好不容易解决,希望通过这样的方式帮到一些人。上述内容如有不足之处,欢迎批评指正。同时非常感谢某些博主的分享,让我能成功解决问题,在这里就不挂链接了。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个简单的坦克大战小游戏代码,可以在PyCharm中运行: ```python import pygame import random # 初始化 pygame pygame.init() # 游戏窗口大小 WINDOW_WIDTH = 600 WINDOW_HEIGHT = 600 # 创建游戏窗口 screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption("坦克大战") # 加载图片 tank1 = pygame.image.load("tank1.png") tank2 = pygame.image.load("tank2.png") bullet = pygame.image.load("bullet.png") wall = pygame.image.load("wall.png") # 设置字体 font = pygame.font.SysFont("arial", 30) # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) # 定义坦克类 class Tank(pygame.sprite.Sprite): def __init__(self, x, y, image): pygame.sprite.Sprite.__init__(self) self.image = image self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.speed = 5 self.direction = "up" def move(self): if self.direction == "up": self.rect.y -= self.speed elif self.direction == "down": self.rect.y += self.speed elif self.direction == "left": self.rect.x -= self.speed elif self.direction == "right": self.rect.x += self.speed def fire(self): bullet1 = Bullet(self.rect.centerx, self.rect.centery, self.direction) bullets.add(bullet1) def update(self): self.move() # 定义子弹类 class Bullet(pygame.sprite.Sprite): def __init__(self, x, y, direction): pygame.sprite.Sprite.__init__(self) self.image = bullet self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.speed = 10 self.direction = direction def move(self): if self.direction == "up": self.rect.y -= self.speed elif self.direction == "down": self.rect.y += self.speed elif self.direction == "left": self.rect.x -= self.speed elif self.direction == "right": self.rect.x += self.speed def update(self): self.move() # 定义墙类 class Wall(pygame.sprite.Sprite): def __init__(self, x, y): pygame.sprite.Sprite.__init__(self) self.image = wall self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y # 创建精灵组 tanks = pygame.sprite.Group() bullets = pygame.sprite.Group() walls = pygame.sprite.Group() # 创建玩家坦克 player_tank = Tank(200, 200, tank1) tanks.add(player_tank) # 创建敌方坦克 for i in range(3): enemy_tank = Tank(random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT), tank2) tanks.add(enemy_tank) # 创建墙 for i in range(10): wall1 = Wall(random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)) walls.add(wall1) # 游戏主循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: player_tank.direction = "up" elif event.key == pygame.K_DOWN: player_tank.direction = "down" elif event.key == pygame.K_LEFT: player_tank.direction = "left" elif event.key == pygame.K_RIGHT: player_tank.direction = "right" elif event.key == pygame.K_SPACE: player_tank.fire() # 更新精灵组 tanks.update() bullets.update() # 碰撞检测 for bullet in bullets: # 子弹和墙的碰撞检测 wall_hit = pygame.sprite.spritecollide(bullet, walls, False) if wall_hit: bullet.kill() for wall in wall_hit: wall.kill() # 子弹和坦克的碰撞检测 tank_hit = pygame.sprite.spritecollide(bullet, tanks, False) if tank_hit: bullet.kill() for tank in tank_hit: tank.kill() # 绘制背景 screen.fill(BLACK) # 绘制精灵组 walls.draw(screen) bullets.draw(screen) tanks.draw(screen) # 绘制分数 score_text = font.render("Score: 0", True, WHITE) screen.blit(score_text, (10, 10)) # 更新屏幕 pygame.display.update() # 退出 pygame pygame.quit() ``` 这个小游戏包括了玩家坦克、敌方坦克、子弹和墙,玩家可以通过方向键控制自己的坦克移动和发射子弹,敌方坦克和墙可以阻挡玩家坦克和子弹的前进。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值