Pygame surface.bilt方法的问题 10C

image就是一张图片
self.rect=self.image.get_rect()

self.screen.blit(self.image, self.rect)
众所周知,第二个参数用于指定绘制的位置,所以上面这种写法的第二个参数是rect,实际有4个值,于是我尝试了下面这么写也行
self.screen.blit(self.image, (self.rect.x, self.rect.y))

而经我测试,就算指定四个值也完全没有任何影响
self.screen.blit(self.image, (self.rect.x, self.rect.y, 400, 500))
self.screen.blit(self.image, (self.rect.x, self.rect.y, 400, 600))
绘制结果完全一样,说明后两个值根本没用

我的问题是,在我添加了一行self.rect.width = 100后,发现image在绘制时不能绘制到屏幕最右边的宽度为100的区域,这是为什么呢。。。

源码如下,一个打飞机小游戏
//ship.py
import pygame

class Ship():
def init(self, ai_settings, screen):
"""Initialize the ship, and set its starting position."""
self.screen = screen
self.ai_settings = ai_settings

    # Load the ship image, and get its rect.
    self.image = pygame.image.load('images/ship.bmp')
    self.rect = self.image.get_rect()
    self.screen_rect = screen.get_rect()

    # Start each new ship at the bottom center of the screen.
    self.rect.centerx = self.screen_rect.centerx
    self.rect.bottom = self.screen_rect.bottom

    # Store a decimal value for the ship's center.
    self.center = float(self.rect.centerx)

    # Movement flags.
    self.moving_right = False
    self.moving_left = False

def update(self):
    """Update the ship's position, based on movement flags."""
    # Update the ship's center value, not the rect.
    if self.moving_right and self.rect.right < self.screen_rect.right:
        self.center += self.ai_settings.ship_speed_factor
    if self.moving_left and self.rect.left > 0:
        self.center -= self.ai_settings.ship_speed_factor

    # Update rect object from self.center.
    self.rect.centerx = self.center

def blitme(self):
    """Draw the ship at its current location."""
    self.rect.w = 100
    self.screen.blit(self.image, self.rect)

//game_function.py
import sys
import pygame
from bullet import Bullet
def check_keydown_events(event, ai_settings, screen, ship, bullets):
"""Respond to keypresses."""
if event.key == pygame.K_RIGHT:
ship.moving_right = True
elif event.key == pygame.K_LEFT:
ship.moving_left = True
elif event.key == pygame.K_SPACE:
fire_bullet(ai_settings, screen, ship, bullets)

def check_keyup_events(event, ship):
        """Respond to key releases."""
        if event.key == pygame.K_RIGHT:
                ship.moving_right = False
        elif event.key == pygame.K_LEFT:
                ship.moving_left = False

def check_events(ai_settings, screen, ship, bullets):
        """Respond to keypresses and mouse events."""
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        sys.exit()
                elif event.type == pygame.KEYDOWN:
                        check_keydown_events(event, ai_settings, screen, ship, bullets)
                elif event.type == pygame.KEYUP:
                        check_keyup_events(event, ship)

def fire_bullet(ai_settings, screen, ship, bullets):
        """Fire a bullet, if limit not reached yet."""
        # Create a new bullet, add to bullets group.
        if len(bullets) < ai_settings.bullets_allowed:
                new_bullet = Bullet(ai_settings, screen, ship)
                bullets.add(new_bullet)

def update_screen(ai_settings, screen, ship, bullets):
        """Update images on the screen, and flip to the new screen."""
        # Redraw the screen, each pass through the loop.
        screen.fill(ai_settings.bg_color)

        # Redraw all bullets, behind ship and aliens.
        for bullet in bullets.sprites():
                bullet.draw_bullet()
        ship.blitme()

        # Make the most recently drawn screen visible.
        pygame.display.flip()

def update_bullets(bullets):
        """Update position of bullets, and get rid of old bullets."""
        # Update bullet positions.
        bullets.update()

        # Get rid of bullets that have disappeared.
        for bullet in bullets.copy():
                if bullet.rect.bottom <= 0:
                        bullets.remove(bullet)

//主程序
import pygame
from pygame.sprite import Group

from settings import Settings
from ship import Ship
import game_functions as gf

def run_game():
        # Initialize pygame, settings, and screen object.
        pygame.init()
        ai_settings = Settings()
        screen = pygame.display.set_mode(
                (ai_settings.screen_width, ai_settings.screen_height))
        pygame.display.set_caption("Alien Invasion")

        # Set the background color.
        bg_color = (230, 230, 230)

        # Make a ship.
        ship = Ship(ai_settings, screen)
        # Make a group to store bullets in.
        bullets = Group()

        # Start the main loop for the game.
        while True:
                gf.check_events(ai_settings, screen, ship, bullets)
                ship.update()
                gf.update_bullets(bullets)
                gf.update_screen(ai_settings, screen, ship, bullets)

run_game()

添加了self.rect.w = 100,飞机就不能移动到最右边了,这是为什么呢。。。

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
pygame.display.flip()为什么无法如程序设计的更新屏幕

``` import pygame import sys def run_game: pygame.init() scareen=pygame.display.set_mode((1200,800)) pygame.dispaly.set_caption("Alien Invasion") while True: for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() pygame.display.flip() run_game ``` 我前段时间macOS更新了Catalina后,再次使用这个程序,就出现了当程序跑到pygame.display.flip()就不再运行,卡在那儿的情况,该怎么处理

关于pygame中pygame.image.load()的问题

在vscode中,使用pygame.image.load()加载相对路径的图片,提示报错,但使用绝对路径却可以。 如何解决相对路径无法加载的问题?(在不改变原图片存放位置的情况下) ``` path = 'images/bg.jpg' bg = pygame.image.load(path) ``` 最后提示: ``` pygame.error: Couldn't open images/bg.jpg ```

pygame.error: video system not initialized

按照视频的代码,但是报了这个错误,网上没有找到类似的答案 报错代码如下: ![图片说明](https://img-ask.csdn.net/upload/201908/17/1566022575_856149.png) 报错如下: ![图片说明](https://img-ask.csdn.net/upload/201908/17/1566022607_7422.png) 全部代码如下: import pygame from plan_sprites import * # 游戏的初始化 pygame.init() # 创建游戏的窗口 大小:480*700 screen = pygame.display.set_mode((480, 700)) # 绘制背景图像 # 1.加载图像数据 bg = pygame.image.load(r"H:\py\飞机大作战\images\background.jpg") screen.blit(bg, (0, 0)) # 3. updata更新屏幕 # 绘制英雄的飞机 hero = pygame.image.load(r"H:\py\飞机大作战\images\me1.png") screen.blit(hero, (150, 300)) # 可以在所有绘制工作完成后,统一调用updata方法 pygame.display.update() # 创建时钟对象 clock = pygame.time.Clock() # 1.定义rect记录飞机的初始位置 hero_rect = pygame.Rect(150, 300, 102, 106) # 创建敌机的精灵 enemy = GameSprite(r"H:\py\飞机大作战\images\enemy1.png") enemy1 = GameSprite(r"H:\py\飞机大作战\images\enemy1.png") # 创建敌机的精灵组 enemy_group = pygame.sprite.Group(enemy,enemy1) # 游戏循环-->意味着游戏的正式开始! while True: # 可以指定游戏循环内部的代码执行的频率 clock.tick(60) # # 捕获事件 # event_list = pygame.event.get() # if len(event_list) > 0: # print(event_list) # 监听事件 for event in pygame.event.get(): # 判断事件类型是否是退出事件 if event.type == pygame.QUIT: print("游戏结束!!") # quit 卸载所有的模块 pygame.quit() # exit()直接终止当前正在执行的程序 exit() # 2. 修改飞机的位置 hero_rect.y -= 1 # 判断飞机的位置 if hero_rect.y <= -126: hero_rect.y = 700 # 3. 调用blit方法绘制图像 screen.blit(bg, (0, 0)) screen.blit(hero, hero_rect) # 让精灵组调用两个方法 # updata 让组中的所有精灵更新位置 enemy_group.update() # drow 在screen 上绘制所有精灵 enemy_group.draw(screen) # 4. 调用updata方法更新显示 pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() pygame.quit() ``` ```

python显示 screen = pygame.display.set_mode((ai_setting.screen_width, ai_setting.screen_height)) AttributeError: 'Settings' object has no attribute 'screen_width'

#萌新向各位好心的大佬求教 import sys import pygame from settings import Settings def run_game(): #初始化pygame,设置和屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") #开始游戏的主循环 while True: #初始化pygame.设置和屏幕对象 # 监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() #每次循环时都重绘制屏幕 scree.fill(ai_settings.bg_color) #让最近的绘制的屏幕可见 pygame.display.flip() run_game() #按教程书编写的模块 class Settings(): """储存《外星人入侵》的所有设置的类""" def _init_(self,screen_width,screen_height,bg_color): """初始化游戏的设置""" #屏幕设置 self.screen_width = 1200 self.screen_height = 800 self.bg_color = (230,230,230) #一运行就报错 screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) AttributeError: 'Settings' object has no attribute 'screen_width' #由衷的感谢大佬的帮助

pygame.error: Couldn't open images\ship.bmp加了r和绝对路径还是报错,求大神指点

《python编程:从入门到实践》这本书中的《外星人入侵》的项目里有如下代码: #coding=utf-8 import sys import pygame from settings import Settings from ship import Ship def run_game(): # 初始化pygame、设置和屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") # 创建一艘飞船 ship = Ship(screen) # 开始游戏的主循环 while True: # 监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 每次循环时都重绘屏幕 screen.fill(ai_settings.bg_color) ship.blitme() # 让最近绘制的屏幕可见 pygame.display.flip() run_game() 运行后报错: File "C:\Users\admin\Desktop\alien_invasion\ship.py", line 8, in __init__ self.image = pygame.image.load(r'C:\Users\admin\Desktop\alien_invasion\images\ship.bmp') pygame.error: Couldn't open C:\Users\admin\Desktop\alien_invasion\images\ship.bmp 我的是windows系统,也按照论坛上说的加了r、补全了路径,但仍然报错

新人使用pycharm运行飞机大战项目报如下错误:AttributeError: module 'pygame.image' has no attribute 'get_rect'

看着网上的教学视频一步一步下来,当建立敌机的精灵后,在程序中调用这个精灵时就会报错,单独运行精灵程序时不会报错,在网上也找了相关的资料,但类似的好像也不对; 主程序代码如下: ``` import pygame from plane_sprites import * pygame.init() #创建游戏窗口 480*700 screen = pygame.display.set_mode((480,700)) #绘制背景图像 bg = pygame.image.load("./images/background.png") screen.blit(bg,(0,0)) #绘制英雄的飞机 hero = pygame.image.load("./images/me1.png") screen.blit(hero,(150,400)) #可以在所有绘制工作结束后,统一调度update方法啊 pygame.display.update() #创建时钟对象 clock = pygame.time.Clock() #1.定义rect记录飞机的初始位置 hero_rect = pygame.Rect(150,400,102,126) #创建敌机的精灵 enemy = GameSprite("./images/enemy1.png") enemy1 = GameSprite("./images/enemy1.png",2) #创建敌机的精灵组 enemy_group = pygame.sprite.Group(enemy,enemy1) #游戏循环>意味着游戏正式开始 while True: #1.可以指定循环体内部的代码执行的频率 clock.tick(60) """ #捕获事件 event_list = pygame.event.get() if len(event_list) > 0: print(event_list) """ #事件监听 for event in pygame.event.get(): #判断用户是否点击了关闭按钮 if event.type == pygame.QUIT: print('退出游戏!') pygame.quit() #直接退出系统 exit() #2.修改飞机的位置 hero_rect.y -= 1 #判读飞机的位置 if hero_rect.y <= -126: hero_rect.y = 700 #3.调用blit方法绘制图像 screen.blit(bg,(0,0)) screen.blit(hero,hero_rect) #让精灵族调用两个方法 #update - 让组中的所有精灵都更新位置 enemy_group.update() #draw - 在screen上显示所有的精灵 enemy_group.draw(screen) #4.使用update方法更新显示 pygame.display.update() pygame.quit() ``` 调用的精灵程序如下: ``` import pygame class GameSprite(pygame.sprite.Sprite): """飞机大战精灵""" def __init__(self, image_name, speed=1): #调用父类的初始化方法 super().__init__() #定义对象的属性 self.image = pygame.image.load(image_name) self.rect = pygame.image.get_rect() self.speed = speed def update(self): #在屏幕的垂直方向移动 self.rect.y += self.speed ``` 运行后报如下的错误: AttributeError: module 'pygame.image' has no attribute 'get_rect' ![图片说明](https://img-ask.csdn.net/upload/202002/08/1581141436_82065.png) 还请各位大佬有时间能帮忙看下这个问题我出错在哪里了,谢谢哈

用sublime写python中pygame.image.load()图片引用后不显示。

import sys import pygame pygame.init() size = width,height = 320,240 screen = pygame.display.set_mode(size) color = (0,0,0) pic = pygame.image.load("pythonStart.png") picrect = pic.get_reect() while True : for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.fill(color) screen.blit(pic,picrect) pygame.display.flip() ##游戏框出现后一闪就没了。报错如下,请大神指教!谢谢 ------------------------------- pygame 1.9.5 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "F:\SublimeText\HelloSublime.py", line 8, in <module> pic = pygame.image.load("pythonStart.png") pygame.error: Couldn't open pythonStart.png [Finished in 1.9s with exit code 1] [shell_cmd: python -u "F:\SublimeText\HelloSublime.py"] [dir: F:\SublimeText] [path: F:\Python\Python37;G:\pyStart;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\idmu\common;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;F:\Python\Python37;F:\Python\Python37\Scripts\;F:\Python\Python37\]

macos10.14 pygame 不显示颜色

无法显示背景颜色,不知为何。新人学python,求解答 import sys import pygame def run_game(): #初始化游戏并且创建一个屏幕对象 pygame.init() screen = pygame.display.set_mode((1200, 800)) pygame.display.set_caption("Alien Invasion") bg_color = (230, 230, 230) #开始游戏主循环 while True: #监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() screen.fill(bg_color) #让最近绘制的屏幕可见 pygame.display.flip() run_game()

用pygame.image.save()保存图片怎么修改储存图片的地址

用树莓派上的摄像头循环抓取图片并保存,用pygame发现图像储存在根目录下,查了文档也没找到怎样修改路径,哪位大神知道怎样修改图片的储存路径或者用别的类库实现抓取图片 代码: ``` #! /usr/bin/python3.5 import serial import RPi.GPIO import os import sys import time import pygame.camera pygame.camera.init() pygame.camera.list_cameras() cam=pygame.camera.Camera('/dev/video0',[640,480]) cam.start() time.sleep(0.1) for x in range(50): image=cam.get_image() t = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) pygame.image.save(image,t+'.jpg') time.sleep(60) cam.stop() ```

spyder 中,pygame的图片加载

import sys import pygame pygame.init() size =width,height=800,600 screen=pygame.display.set_mode(size) color=(0,0,0) ball=pygame.image.load("ball.png") ballrect=ball.get_rect() while True: for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() sys.exit() screen.fill(color) screen.blit(ball,ballrect) pygame.display.flip() ``问 `图片大小 80*80 ,怎么加载 窗口中 ```

pycharm安装pygame报错ImportError: No module named 'pygame.base'急急急!!!

![图片说明](https://img-ask.csdn.net/upload/201905/11/1557534487_303729.png)!![图片说明](https://img-ask.csdn.net/upload/201905/11/1557534514_959588.png)!![图片说明](https://img-ask.csdn.net/upload/201905/11/1557534544_540629.png) ![图片说明](https://img-ask.csdn.net/upload/201905/11/1557540767_71606.png) 都配置好了为什么导入不了???

pyinstaller打包py成exe后音乐文件播放异常,pygame.error

已解决 虽然不知道什么原因 用pyinstaller打包以后pygame不支持播放mp3和ogg文件 我把音乐文件转换成wav格式就成功了 所以mp3和ogg在pycharm里可以正常使用,不过如果要转成exe的话还得先把音乐文件统一转化成wav才行 问题描述: ``` if self.direct == 1: pygame.init() music = r"music\ai.mp3" pygame.mixer.music.load(music) pygame.mixer.music.play() ``` 一个十分普通的语句,在pycharm里可以顺利运行,但使用pyinstaller完成打包,并把music文件夹复制到和exe文件同目录下后却不能正常播放music里面的音乐文件,出现如下报错:![图片说明](https://img-ask.csdn.net/upload/202001/11/1578673075_740305.png) 整条路径没有中文名,歌曲文件名为ai.mp3,也没有中文名; 打包语句:pyinstaller -D loadui_new.py 目前已经试过网上的冻结路径法、spec打包(使用--add-data添加文件)法,报错没有变化。 初学python,还请各位前辈能教一下,感激不尽

pygame error: couldn't open the ship.bmp

在pygame里练习一个游戏程序,遇到“pygame error: couldn't open the ship.bmp”在网上查了下错误的原因,主要是说要补全路径或把bmp图片放在.py文件相同的目录下,我各种方式都试了,但还是报错... 以下是代码: import sys import pygame from settings import Settings from ship import Ship def run_game(): #initialize game and create a window obj pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width,ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") #creat a ship ship = Ship(screen) #begin main cycle of game while True: #monitor key and shubiao for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() #draw a new screen while a new cycle begin screen.fill(ai_settings.bg_color) ship.blitme() #show the near screen pygame.display.flip() run_game() 模块ship.py import pygame class Ship(): def __init__(self,screen): """initialize ship and set location of ship""" self.screen = screen #load image of ship and get the bounding box of the ship self.image = pygame.image.load(r'images\ship.bmp') self.rect = self.image.get_rect() self.screen_rect = screen.get_rect() #place each ship into center of bottom of screen self.rect.centerx = self.screen_rect.centerx self.rect.bottom = self.screen_rect.bottom def blitme(self): """drawing the ship in the specific place""" self.screen.blit(self.image,self.rect)

Python中pygame大写Rect和小写rect分别表示什么意思

零基础学习Python,有疑惑,请大师们解疑: 1、pygame.Rect(left,top,width,height)和pygame.rect.Rect(left,top,width,height),Rect(left,top,width,height)三种写法分别是怎么解释的? 2、有点区分不清大写Rect和小写rect(Python中区分大小写?) 3、Rect/rect 是对象?还是方法,还是类?(完全弄混了。。。)

用pygame设计游戏时打不开声音文件

# Set up the music. pickUpSound = pygame.mixer.Sound('ssss.wav') pygame.mixer.music.load('hhhh.wav') pygame.mixer.music.play(-1, 0.0) 执行上面这段代码时,总是报错:‘’pygame.error: Unable to open file 'ssss.wav' ‘’ 注:相关文件已经放在代码所在的文件夹中。

pygame鼠标事件不执行是event问题还是刷新不成功问题?

pygame编写游戏的过程中,程序可以执行,但是对于鼠标点击的事件过程没有反应(设定为:左键点击往左移直到鼠标松开,右键同理),在鼠标点击过程中,并没有发生任何移动,不知道这是事件的问题,还是页面刷新不成功的问题? ``` for event in pygame.event.get(): if event.type== pygame.QUIT: pygame.quit() elif event.type == pygame.KEYDOWN: if event.key==pygame.K_RIGHT: ship.moving_right=True if event.key==pygame.K_LEFT: ship.moving_left=True elif event.type==pygame.KEYUP: if event.key==pygame.K_RIGHT: ship.moving_right=False if event.key==pygame.K_LEFT: ship.moving_left=False while True: gf.check_events(ship) ship.update() gf.update_screen(ai_settings,screen,ship) ``` ``` ``` ```

使用pygame无法加载图片,求指教

# -*- coding:utf-8 -*- import pygame import time def main(): #1. 创建窗口 screen = pygame.display.set_mode((480,852),0,32) #2. 创建一个背景图片 background = pygame.image.load("D:\\plane\\plane1\\codes\\background.png") while True: screen.blit(background, (0,0)) pygame.display.update() time.sleep(0.01) if __name__ == "__main__": main() 编译报错显示: ![图片说明](https://img-ask.csdn.net/upload/201810/24/1540357022_111381.jpg)

pygame 贪吃蛇遇到的问题

做了两个黑洞,进入一个黑洞会传送到另一个黑洞,但是timer.tick(30)帧太快导致无法从传送,改成timer.tick(2)就可以,这是为什么,应该怎么做?主程序代码如下: ``` 主程序开始 pygame.init() img_size =40 img_group = list() screen_size = 0 #pygame.FULLSCREEN screen = pygame.display.set_mode((24*img_size,18*img_size),screen_size) pygame.display.set_caption("嗷大喵贪吃蛇") face = pygame.image.load("face.png") load_pic() game_init() game_over = False last_time = 0 bgm = None auto_play = False step_time = 400 waiting =True audio_init() rePlay = True play_sound(bgm) while True: timer.tick(2) ticks = pygame.time.get_ticks() current_time = time.clock() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() elif event.type == MOUSEBUTTONUP: if waiting == True: waiting = False game_over = False last_time = 0 auto_play = False step_time = 400 game_init() keys = pygame.key.get_pressed() if keys[K_ESCAPE]: pygame.quit() sys.exit() elif keys[K_UP] or keys[K_w]: snake.velocity = Point(0,-1) elif keys[K_DOWN] or keys[K_s]: snake.velocity = Point(0,1) elif keys[K_LEFT] or keys[K_a]: snake.velocity = Point(-1,0) elif keys[K_RIGHT] or keys[K_d]: snake.velocity = Point(1,0) elif keys[K_f]: if screen_size == pygame.FULLSCREEN: screen_size =0 else: screen_size =pygame.FULLSCREEN screen = pygame.display.set_mode((24*img_size,18*img_size),screen_size) pygame.display.set_caption("嗷大喵贪吃蛇") elif keys[K_PLUS] or keys[K_KP_PLUS]: step_time -= 10 if step_time <50: step_time=50 elif keys[K_MINUS] or keys[K_KP_MINUS]: step_time += 10 if step_time >400: step_time = 400 elif keys[K_SPACE]: if auto_play: auto_play = False step_time = 400 else: auto_play = True step_time = 100 if waiting: screen.blit(face,(0,0)) else: if not game_over: hole_group.update(ticks) snake.update(ticks) food_group.update(ticks) #检测是否捡起食物,并增加身体长度 hit_list = pygame.sprite.groupcollide(snake.segments, \ food_group, False, True) if len(hit_list) > 0: food_group.add(Food()) snake.add_segment() #检测是否碰到了自己的身体 for n in range(1, len(snake.segments)): if pygame.sprite.collide_rect(snake.segments[0], snake.segments[n]): game_over = True #检查屏幕边界 head_x = snake.segments[0].X//img_size head_y = snake.segments[0].Y//img_size if head_x < 0: snake.segments[0].X = 23 * img_size elif head_x > 24: snake.segments[0].X = 0 * img_size if head_y < 0: snake.segments[0].Y = 17 * img_size elif head_y > 18: snake.segments[0].Y = 0 * img_size #检测是否进入黑洞,并从另一个黑洞出来 holex = snake.segments[0].X holey = snake.segments[0].Y if holex == hole1.X and holey == hole1.Y: snake.segments[0].X = hole2.X snake.segments[0].Y = hole2.Y elif holex == hole2.X and holey == hole2.Y: snake.segments[0].X = hole1.X snake.segments[0].Y = hole1.Y #执行自动寻路代码 if auto_play: auto_move() backbuffer.fill((20,50,20)) snake.draw(backbuffer) food_group.draw(backbuffer) hole_group.draw(backbuffer) screen.blit(backbuffer, (0,0)) if not game_over: print_text(font, 0, 0, "Length " + str(len(snake.segments))) print_text(font, 0, 20, "Position " + str(snake.segments[0].X//img_size) + \ "," + str(snake.segments[0].Y//img_size)) else: print_text(font, 0, 0, "GAME OVER") waiting = True game_over = False #显示自动字样 if auto_play: print_text(font, 600, 0, "AUTO") #循环播放背景音乐 if int(current_time)%200 ==0 and rePlay: play_sound(bgm) rePlay = False if int(current_time)%200 == 1: rePlay = True pygame.display.update() ```

pygame 没有报错,但是加载不出应该加载的图片

import pygame from pygame.locals import * import time class HeroPlane(object): def __init__(self,screen_temp): self.x = 150 self.y = 420 self.scree = screen_temp self.image = pygame.image.load("E:/Python.py/FJDZ/FJ/aip01.png") self.bullet_list = []#存储发射出去的子弹 def display(self): self.scree.blit(self.image,(self.x,self.y)) for bullet in self.bullet_list: bullet.display() bullet.move() def move_left(self): self.x -= 5 def move_right(self): self.x += 5 def fire(self): self.bullet_list.append(Bullet(self.screen, self.x, self.y)) class Bullet(object): def __init__(self,screen_temp, x, y): self.x = 150 self.y = 200![图片说明](https://img-ask.csdn.net/upload/201909/30/1569827633_558153.jpg) self.scree = screen_temp self.image = pygame.image.load("E:/Python.py/FJDZ/FJ/airbool.png") def display(self): self.screen.blit(self.image,(self.x, self.y)) def move(self): self.y-=20 def key_control(hero_temp): for event in pygame.event.get(): #获取事件,比如按键等 if event.type == QUIT: #判断是否点击了推出按钮 print("exit") exit() elif event.type == KEYDOWN:#判断是否按下了键 if event.key == K_d or event.key == K_RIGHT:#判断是否按下了d或者right print("right") hero_temp.move_right() elif event.key == K_a or event.key == K_LEFT: #判断是否按下了A或者LEFT print("left") hero_temp.move_left() elif event.key == K_SPACE: #检测是否按下了空格键 print("space") def main(): screen = pygame.display.set_mode((480,652),0,32)#创建一个窗口 background = pygame.image.load("E:/Python.py/FJDZ/FJ/sky.png") #将背景图片载入 hero = HeroPlane(screen) #将自己的飞机载入 while True: screen.blit(background,(0,0))#用背景图片的左上角对齐窗口的左上角开始填充 hero.display()#载入自己的飞机在x y的位置 pygame.display.update() key_control(hero) time.sleep(0) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if __name__ == "__main__": main() ``` ``` 本来应该加载出子弹的图片的,但是加载不出来。 python新手一个,希望大神能帮忙看一下。

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

相关热词 c#对文件改写权限 c#中tostring c#支付宝回掉 c#转换成数字 c#判断除法是否有模 c# 横向chart c#控件选择多个 c#报表如何锁定表头 c#分级显示数据 c# 不区分大小写替换
立即提问
相关内容推荐