Dzięki, ja jakoś nie potrafię zrozumieć tej składni... Mógłbym prosić o translacje do Javy jeszcze tylko tych 2 poniższych przykładów?
1).
def collision(self,x1,y1,w1,h1,x2,y2,w2,h2):
if x1 >= x2+w2: return True
if x1+w1 <= x2: return True
if y1 >= y2+h2: return True
if y1+h1 <= y2: return True
return False
2).
def collision(x,y,w,h,cx,cy,r):
# ustalamy pozycje najblizszego wierzcholka do srodka okregu
tx = cx
ty = cy
if cx < x: tx = x
if cx >= (x + w): tx = x + w
if cy < y: ty = y
if cy >= (y + h): ty = y + h
# sprawdzamy odleglosc miedzy wierzcholkiem a srodkiem okregu
# jesli mniejsza niz promien, oznacza to kolizje
if (cx-tx)**2+(cy-ty)**2 < r**2: return True
return False
I mógłby mi ktoś powiedzieć czym jest to "self" w 1 przykładzie? Tutaj cały kod (tego nie chce tłumaczyć do Javy jak coś):
import pygame # importujemy biblioteki pygame
from pygame.locals import * # importujemy nazwy [QUIT, KEYDOWN,K_ESCAPE] itp.
from sys import exit # importujemy funkcje systemowa exit
screen_size = (800,600) # ustalamy rozmiar ekranu
class IsoGame(object):
def __init__(self):
pygame.init() # incjalizujemy biblioteke pygame
flag = DOUBLEBUF # wlaczamy tryb podwojnego buforowania
# tworzymy bufor na grafike
self.surface = pygame.display.set_mode(screen_size,flag)
# zmienna stanu gry
self.gamestate = 1 # 1 - run, 0 - exit
self.images = [None] *2
self.images[0] = pygame.image.load('rectangle1.png')
self.images[1] = pygame.image.load('rectangle2.png')
self.sprite_x = 220 # pozycja x duszka
self.sprite_y = 130 # pozycja y duszka
self.speed = 1.2 # szybkosc poruszania duszka
self.player_x = 320 # pozycja x duszka na ekranie
self.player_y = 250 # pozycja y duszka na ekranie
self.loop() # glowna petla gry
def move(self,dirx,diry):
""" poruszanie duszkiem """
dx = self.player_x + (dirx * self.speed)
dy = self.player_y + (diry * self.speed)
if not self.collision(dx,dy,100,100,self.sprite_x,self.sprite_y,100,100):
return
self.player_x = dx
self.player_y = dy
def game_exit(self):
""" funkcja przerywa dzialanie gry i wychodzi do systemu"""
exit()
def collision(self,x1,y1,w1,h1,x2,y2,w2,h2):
if x1 >= x2+w2:
return True
if x1+w1 <= x2:
return True
if y1 >= y2+h2:
return True
if y1+h1 <= y2:
return True
return False
def loop(self):
""" glowna petla gry """
while self.gamestate==1:
player_anim = 0
for event in pygame.event.get():
if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
self.gamestate=0
keys = pygame.key.get_pressed() # odczytujemy stan klawiszy
if keys[K_s]:
self.move(0,1) # ruch w dol
if keys[K_w]:
self.move(0,-1) # ruch w gore
if keys[K_d]:
self.move(1,0) # ruch w prawo
if keys[K_a]:
self.move(-1,0) # ruch w lewo
self.surface.fill((0,0,0)) # czyscimy ekran, malo wydajne ale wystarczy
# umieszczamy gracza
self.surface.blit(self.images[1],(self.player_x,self.player_y))
self.surface.blit(self.images[0], (self.sprite_x,self.sprite_y))
pygame.display.flip() # przenosimy bufor na ekran
self.game_exit()
if __name__ == '__main__':
IsoGame()