2014-10-09 2 views
1

Как написать код, чтобы изображение контролировалось движением мыши в python с помощью pygame?кодирование игры в python с использованием pygame

Я был бы признателен, если бы вы могли помочь с написанием кода, потому что я понятия не имею, как это сделать.

Я уже пробовал это:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import pygame 
import random 

pygame.init() 
size=[800,600] 
screen=pygame.display.set_mode(size) 
pygame.display.set_caption("Sub Dice") 

background_position=[0,0] 
background_image=pygame.image.load('C:\Users\SHIVANGI\Desktop\shivangi project\program\star.png').convert() 
card=pygame.image.load('C:\Users\SHIVANGI\Desktop\shivangi project\program\lappy.png').convert_alpha() 
card=pygame.transform.smoothscale(card,(130,182)) 
closeDeckShirt=pygame.image.load('C:\Users\SHIVANGI\Desktop\shivangi project\program\star.png').convert_alpha() 

SETFPS=30 
zx=0 
zy=0 

done=False 
clock=pygame.time.Clock() 

while done==False: 
    clock.tick(SETFPS) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done=True 

     if event.type == pygame.MOUSEBUTTONDOWN: 
      print('a') 


     screen.blit(background_image, background_position) 
     screen.blit(card,[zx,zy]) 
     zx=zx+2 
     zy=zy+2 
     pygame.display.flip() 

pygame.quit() 

Однако движение ограничено только в одном направлении, независимо от того, где я двигаю мышь. Я хочу, чтобы изображение двигалось вперед и чтобы движение вбок было контролируемым движением мыши.

Кроме того, моя цель - создать игру, подобную крыльям над водой, доступной в orisinal.

+0

Одна вещь, не связанная с Pygame - ваши пути к файлам внутри строк должны использовать двойные '' 's или использовать прямую косую черту ('/'), иначе они, вероятно, будут разбиты - поскольку' \ 'является scape char внутри строк Python. – jsbueno

ответ

0

Вы очень близки к выполнению этой работы. Я сделал несколько небольших изменений.

Итак, ваша программа имеет 2 проблемы. Во-первых, ваша программа перемещает изображение на КАЖДОЙ pygame.event независимо от события - вы увидите это, нажав клавишу, щелкнув мышью и т. Д. Вторая проблема заключается в том, что вы перемещаете изображение в фиксированном направлении.

Единственное, что я изменил твой while цикл:

while done==False: 
    clock.tick(SETFPS) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done=True 
    if event.type == pygame.MOUSEBUTTONDOWN: 
     print('a') 
    if event.type == pygame.MOUSEMOTION: # We only want to move the image when the mouse is moved. 
     mouse_position = pygame.mouse.get_pos() # Where is the mouse at? 
     screen.blit(background_image, background_position) 
     screen.blit(card,[zx,zy]) 
     zx=mouse_position[0] # mouse_position is in the form [x,y], we only want the x part 
     zy=mouse_position[1] 
    pygame.display.flip() 

Как вы можете видеть, Pygame имеет mouse.get_pos() функцию, которая на самом деле получает местоположение мыши на экране. Это просто координата (x, y).

+0

thanx много. это была большая помощь. – nerd0711

Смежные вопросы