import pygame, math, random
pygame.init()
#fps
fps = 30
clock = pygame.time.Clock()
#ekran boyutu
screen_width = 850
screen_height = 600
#ekran
surface = pygame.display.set_mode((screen_width,screen_height))
#renkler
green = 0,255,0
red = 255,0,0
blue = 0,0,255
yellow = 255,255,0
white = 255,255,255
black = 0,0,0
#asker/kare
class Square:
def __init__(self, color, x, y, width, height, speed):
self.rect = pygame.Rect(x,y,width,height)
self.color = color
self.direction = 'E'
self.speed = speed
#asker hareketi
def move(self):
if self.direction == 'E':
self.rect.x = self.rect.x+self.speed
if self.direction == 'W':
self.rect.x = self.rect.x-self.speed
if self.direction == 'N':
self.rect.y = self.rect.y-self.speed
if self.direction == 'S':
self.rect.y = self.rect.y+self.speed
#asker hareket yönlerini
def moveDirection(self, direction):
if direction == 'E':
self.rect.x = self.rect.x+self.speed
if direction == 'W':
self.rect.x = self.rect.x-self.speed
if direction == 'N':
self.rect.y = self.rect.y-self.speed
if direction == 'S':
self.rect.y = self.rect.y+self.speed
#çarpışma fonksiyonunu/detaylandırmak gerek
def collided(self, other_rect):
return self.rect.colliderect(other_rect)
#çizme fonksiyonu/yarı yarıya anladım
def draw(self, surface):
pygame.draw.rect(surface, self.color, self.rect)
#miraslama işlemi/hiç anlamadım
class Bullet(Square):
#bu kısım tam anlamıyla 0 bilgi
def __init__(self, color, x, y, width, height, speed, targetx,targety):
super().__init__(color, x, y, width, height, speed)
angle = math.atan2(targety-y, targetx-x) #get angle to target in radians
print('Angle in degrees:', int(angle*180/math.pi))
self.dx = math.cos(angle)*speed
self.dy = math.sin(angle)*speed
self.x = x
self.y = y
#Override/geçersiz saymak/biraz anladım
def move(self):
self.x = self.x + self.dx
self.y = self.y + self.dy
self.rect.x = int(self.x)
self.rect.y = int(self.y)
#sq adında kare oluşturuyor/bu kısmı anladım ama görsel üzerinde nasıl uyarlayacam bilmiyom
sq = Square(green,200,200,100,100, 10)
#liste elemanları / liste olduğunun farkındayım ama neden lazımlar bi fikrim yok
bullets = []
enemies = []
#program döngü kısmı
done = True
while done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = False
elif event.type == pygame.KEYDOWN:
print(event.key) #burası yapılan işlemi yazdırmak için
#az çok anladım
if event.key==32: # 32 numaralı tuş space
#etkinlik 32 numaralı tuşu algılarsa-ateş etme alt kısımda
spawnx = sq.rect.x + sq.rect.width/2 - 10
b = Square(red, spawnx,sq.rect.y, 10,50, 20) # mermi özellikleri
b.direction = 'N'#space ile kuzeye yani sadece yukarı ateş ediliyor
bullets.append(b) # mermiyi ekrana ekletti
#mouse ile tıklanan yere mermi gönderme/anladım gibi
if event.type == pygame.MOUSEBUTTONDOWN:
x,y = pygame.mouse.get_pos()
#print(x,y)
b = Bullet(red, sq.rect.centerx, sq.rect.centery, 20,20, 20, x,y)
bullets.append(b)
#hareket yönlerine tuş atama
pressed = pygame.key.get_pressed()
if pressed[pygame.K_w]:
sq.moveDirection('N')
if pressed[pygame.K_a]:
sq.moveDirection('W')
if pressed[pygame.K_s]:
sq.moveDirection('S')
if pressed[pygame.K_d]:
sq.moveDirection('E')
#tam anlayamadım
for b in bullets:
b.move()
for e in enemies:
e.move()
#bu kısıma dair hiçbir fikrim yok!
if random.randint(1,30) == 15: #15 doesn't matter
x = random.randint(0,screen_width-40)
e = Square(yellow, x,-40, 40,40, 5)
e.direction = 'S'
enemies.append(e)
#bu kısımı hiç mi hiç anlamadım
for i in reversed(range(len(bullets))):
for j in reversed(range(len(enemies))):
if bullets[i].collided(enemies[j].rect):
#e.color = white #TESTING # test için muhtemelen
del enemies[j]
del bullets[i]
break
#arka planı temizliyor
surface.fill(black)
#mermi ve düşmanları ekrana çizdiriyor
for b in bullets:
b.draw(surface)
for e in enemies:
e.draw(surface)
sq.draw(surface)
#ekranı güncelliyor ve fps değeri ayarlama kısmı
pygame.display.update()
clock.tick(fps)
pygame.quit()
exit()