4kpt
Информативен код.
три разных программера сказали, что дело не может быть в коде. Да это и логично. при всех равных (софт, версия языка, код, ос) тормоза только на одной машине. ==> проблема в машине, а не в коде. Вернее в окружении. Либо драйвер, либо видео, либо что-то из стороннего, что пользует pygame. Но что именно потыкать? Ибо pygame знаю поверхностно, а уж тем более его взаимоотношения с внешним окружением.
Сам код до ужаса банален и никакого секрета не представляет. Но если для диагностики проблем окружения нужен код питона (шизофрения, привет тебе!!!), то ладно… Выложу.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#--------------------------
# !!! Python 3.2
import pygame
from pygame.locals import *
from math import modf
white = (255, 255, 255 )
black = (0, 0, 0 )
red = (255, 0, 0 )
blue = (0, 0, 255 )
green = (0, 255, 0 )
yellow = (255, 255, 0 )
purple = (255, 0, 255 )
grey = (128, 128, 128 )
pygame.init ()
mainloop = True
# initial screen
screen_size = (640, 480)
screen = pygame.display.set_mode (screen_size, 0, 32)
pygame.display.set_caption('PyGame Project')
# initial clock
clock = pygame.time.Clock()
milli = 0.0
sec = 0.0
# initial data
osn = 32
shag_osn = 1
pers = Rect (osn*3, osn*3, osn, osn)
pers_color = blue
pers_speed = osn*8
new_pos = (pers.x, pers.y)
dest = Rect (0, 0, 30, 30)
dm = 0
while mainloop:
for event in pygame.event.get():
# "if-else" events
if event.type == KEYDOWN:
if event.key == K_w:
pers.move_ip (0, osn)
new_pos = (pers.x, pers.y)
if event.type == KEYDOWN:
if event.key == K_s:
pers.move_ip (0, -osn)
new_pos = (pers.x, pers.y)
if event.type == KEYDOWN:
if event.key == K_a:
pers.move_ip (-osn, 0)
new_pos = (pers.x, pers.y)
if event.type == KEYDOWN:
if event.key == K_d:
pers.move_ip (osn, 0)
new_pos = (pers.x, pers.y)
if event.type == MOUSEBUTTONDOWN:
if event.button == 1:
new_pos = (int((modf(event.pos[0]/osn))[1]*osn),int((modf(event.pos[1]/osn))[1]*osn))
print (new_pos, new_pos[0]/osn, new_pos[1]/osn)
if event.type == QUIT:
mainloop = False
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
mainloop = False
# calc clock --------------------------------------
milli = clock.tick()
sec = milli / 1000.0
# -------------------------------------------------
screen.fill(white)
# create frame ------------------------------------
dm = pers_speed*sec
if pers.x != new_pos[0]:
if (new_pos[0]-pers.x)>0:
pers.move_ip(dm, 0)
if (new_pos[0]-pers.x)<0:
pers.move_ip(-dm, 0)
if pers.y != new_pos[1]:
if (new_pos[1]-pers.y)>0:
pers.move_ip(0, dm)
if (new_pos[1]-pers.y)<0:
pers.move_ip(0, -dm)
pygame.draw.rect(screen, pers_color, pers)
pygame.display.update()
pygame.quit()