Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Pygame中在屏幕上移动对象_Python_Pygame - Fatal编程技术网

Python 在Pygame中在屏幕上移动对象

Python 在Pygame中在屏幕上移动对象,python,pygame,Python,Pygame,所以我试着在屏幕上任意方向移动两个多边形,一个圆和一条线的随机混合体,当它到达屏幕的末端时,会被放回到屏幕上并再次移动。简单地说,我想在屏幕上移动这些形状。我真的不知道怎么做,我是pygame的新手,所以这一切都有点让人困惑,但这就是我目前所拥有的 import pygame, sys, time, random from pygame.locals import * pygame.init() windowSurface = pygame.display.set_mode((500, 40

所以我试着在屏幕上任意方向移动两个多边形,一个圆和一条线的随机混合体,当它到达屏幕的末端时,会被放回到屏幕上并再次移动。简单地说,我想在屏幕上移动这些形状。我真的不知道怎么做,我是pygame的新手,所以这一切都有点让人困惑,但这就是我目前所拥有的

import pygame, sys, time, random
from pygame.locals import *

pygame.init()

windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption("Paint")

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

windowSurface.fill(WHITE)

info = pygame.display.Info()
sw = info.current_w
sh = info.current_h

x = y = 0

dx = 5
dy = 2


while True:

    pygame.draw.polygon(windowSurface,BLUE,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
    pygame.draw.polygon(windowSurface,RED,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
    pygame.draw.line(windowSurface,BLACK,(60+x,85+y), (120+x, 110+x), 6)
    pygame.draw.circle(windowSurface, GREEN , (75+x,100+y), 13, 0)

    x += dx
    y += dy

    if x - dx < 0 or x + dx > sw:
        dx = -dx
    if y - dy < 0 or y + dy > sh:
        dy = -dy


    pygame.display.update()

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
导入pygame、sys、time、random
从pygame.locals导入*
pygame.init()
windowSurface=pygame.display.set_模式((500400),0,32)
pygame.display.set_标题(“绘制”)
黑色=(0,0,0)
白色=(255,255,255)
红色=(255,0,0)
绿色=(0,255,0)
蓝色=(0,0255)
窗台表面。填充(白色)
info=pygame.display.info()
sw=当前信息
sh=当前信息\u h
x=y=0
dx=5
dy=2
尽管如此:
pygame.draw.polygon(窗口表面,蓝色,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
pygame.draw.polygon(窗口表面,红色,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
pygame.draw.line(窗口表面,黑色,(60+x,85+y),(120+x,110+x),6)
pygame.draw.circle(窗口表面,绿色,(75+x,100+y),13,0)
x+=dx
y+=dy
如果x-dx<0或x+dx>sw:
dx=-dx
如果y-dy<0或y+dy>sh:
dy=-dy
pygame.display.update()
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()

您可能希望在每次重画时清除屏幕

while True:
    windowSurface.fill(WHITE) #This clears the screen on each redraw
    pygame.draw.polygon(windowSurface,BLUE,((0+x,250+y),(120+x,120+y),(55+x,55+y)))
    pygame.draw.polygon(windowSurface,RED,((0+x,150+y),(85+x,85+y),(100+x,175+y),(0+x,150+y)))
    pygame.draw.line(windowSurface,BLACK,(60+x,85+y), (120+x, 110+y), 6)
    pygame.draw.circle(windowSurface, GREEN , (75+x,100+y), 13, 0)
另外,查看直线的坐标。我已将端点更改为 (120+x,110+y)

如果你把你的边缘检测改成这个,你的形状大部分会留在窗口中

if x < 0 or x > sw-120:
    dx = -dx
    x += dx
if y < -85 or y > sh-175:
    dy = -dy
    y += dy 
如果x<0或x>sw-120:
dx=-dx
x+=dx
如果y<-85或y>sh-175:
dy=-dy
y+=dy

这是家庭作业吗?不,这是我班的额外练习。我在一个班级里,但这是分开的,试图更深入地学习这些东西。