制作一个可拖动的黑盒子
Make a draggable black box
我正在尝试制作一个可以单击和拖动的黑框,但我似乎卡住了。谁能帮我看看哪里出错了?
def main_game():
import pygame
import math
from time import *
pygame.init()
displayWidth = 268
displayHeight = 552
cyan = (0,255,255)
red = (255,0,0)
dark_red = (150,0,0)
black = (0,0,0)
grey = (200,200,200)
dark_cyan = (0,230,230)
my_rect = pygame.Rect([100,100,100,100])
gameDisplay = pygame.display.set_mode((displayWidth,displayHeight))
pygame.display.set_caption('Test')
pygame.display.update()
gameExit = False
主游戏循环:
while not gameExit:
for event in pygame.event.get():
print event
gameDisplay.fill(grey)
pygame.draw.rect(gameDisplay, black, my_rect)
if event.type == pygame.QUIT:
ExitFunction()
pygame.display.update()
if event.type == pygame.MOUSEBUTTONDOWN:
is_inside = my_rect.collidepoint(pygame.mouse.get_pos())
if is_inside == 1:
gameExit = True
DragScreen()
这是我徒劳的尝试之一,我创建了一个新函数来尝试将矩形定位到我的鼠标坐标。
def DragScreen():
import pygame
from time import *
pygame.init()
displayWidth = 268
displayHeight = 552
cyan = (0,255,255)
red = (255,0,0)
dark_red = (150,0,0)
black = (0,0,0)
grey = (200,200,200)
dark_cyan = (0,230,230)
gameDisplay = pygame.display.set_mode((displayWidth, displayHeight))
pygame.display.set_caption('Test')
pygame.display.update()
gameExit = False
while not gameExit:
for event in pygame.event.get():
print event
gameDisplay.fill(grey)
pygame.draw.rect(gameDisplay, black, pygame.mouse.get_pos())
if event.type == pygame.QUIT:
ExitFunction()
我会添加一个pygame.MOUSEBUTTONUP事件来停止拖拽框
pygame.display.update()
我创建了这个函数,当它被调用时直接退出(它工作正常)。
def ExitFunction():
import pygame
from time import*
pygame.init()
pygame.quit()
quit()
pygame.quit()
quit()
main_game()
所以基本上,您可以测试对对象的点击。并将对象移动到鼠标的位置:
################################################################################
# Imports ######################################################################
################################################################################
from pygame.locals import *
import pygame, os, sys
################################################################################
# Screen Setup #################################################################
################################################################################
pygame.init()
scr = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Box Test')
################################################################################
# Make Square ##################################################################
################################################################################
surf = pygame.Surface((64, 64)); surf.fill((255, 0, 0))
rect = surf.get_rect(); rect.center = (320, 240)
################################################################################
# Game Loop ####################################################################
################################################################################
while True:
pygame.display.update()
scr.fill((0, 0, 0))
scr.blit(surf, rect)
if pygame.mouse.get_pressed()[0]:
if rect.collidepoint(pygame.mouse.get_pos()):
rect.center = pygame.mouse.get_pos()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
################################################################################
################################################################################
################################################################################
我正在尝试制作一个可以单击和拖动的黑框,但我似乎卡住了。谁能帮我看看哪里出错了?
def main_game():
import pygame
import math
from time import *
pygame.init()
displayWidth = 268
displayHeight = 552
cyan = (0,255,255)
red = (255,0,0)
dark_red = (150,0,0)
black = (0,0,0)
grey = (200,200,200)
dark_cyan = (0,230,230)
my_rect = pygame.Rect([100,100,100,100])
gameDisplay = pygame.display.set_mode((displayWidth,displayHeight))
pygame.display.set_caption('Test')
pygame.display.update()
gameExit = False
主游戏循环:
while not gameExit:
for event in pygame.event.get():
print event
gameDisplay.fill(grey)
pygame.draw.rect(gameDisplay, black, my_rect)
if event.type == pygame.QUIT:
ExitFunction()
pygame.display.update()
if event.type == pygame.MOUSEBUTTONDOWN:
is_inside = my_rect.collidepoint(pygame.mouse.get_pos())
if is_inside == 1:
gameExit = True
DragScreen()
这是我徒劳的尝试之一,我创建了一个新函数来尝试将矩形定位到我的鼠标坐标。
def DragScreen():
import pygame
from time import *
pygame.init()
displayWidth = 268
displayHeight = 552
cyan = (0,255,255)
red = (255,0,0)
dark_red = (150,0,0)
black = (0,0,0)
grey = (200,200,200)
dark_cyan = (0,230,230)
gameDisplay = pygame.display.set_mode((displayWidth, displayHeight))
pygame.display.set_caption('Test')
pygame.display.update()
gameExit = False
while not gameExit:
for event in pygame.event.get():
print event
gameDisplay.fill(grey)
pygame.draw.rect(gameDisplay, black, pygame.mouse.get_pos())
if event.type == pygame.QUIT:
ExitFunction()
我会添加一个pygame.MOUSEBUTTONUP事件来停止拖拽框
pygame.display.update()
我创建了这个函数,当它被调用时直接退出(它工作正常)。
def ExitFunction():
import pygame
from time import*
pygame.init()
pygame.quit()
quit()
pygame.quit()
quit()
main_game()
所以基本上,您可以测试对对象的点击。并将对象移动到鼠标的位置:
################################################################################
# Imports ######################################################################
################################################################################
from pygame.locals import *
import pygame, os, sys
################################################################################
# Screen Setup #################################################################
################################################################################
pygame.init()
scr = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Box Test')
################################################################################
# Make Square ##################################################################
################################################################################
surf = pygame.Surface((64, 64)); surf.fill((255, 0, 0))
rect = surf.get_rect(); rect.center = (320, 240)
################################################################################
# Game Loop ####################################################################
################################################################################
while True:
pygame.display.update()
scr.fill((0, 0, 0))
scr.blit(surf, rect)
if pygame.mouse.get_pressed()[0]:
if rect.collidepoint(pygame.mouse.get_pos()):
rect.center = pygame.mouse.get_pos()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
################################################################################
################################################################################
################################################################################