diff --git a/img1/162-1620164_star-wars-lasers-g1-p1-star-wars-films.png b/img1/162-1620164_star-wars-lasers-g1-p1-star-wars-films.png new file mode 100644 index 0000000..f28e678 Binary files /dev/null and b/img1/162-1620164_star-wars-lasers-g1-p1-star-wars-films.png differ diff --git a/img1/bg.jpg b/img1/bg.jpg new file mode 100644 index 0000000..46c34b1 Binary files /dev/null and b/img1/bg.jpg differ diff --git a/img1/enemy1.png b/img1/enemy1.png new file mode 100644 index 0000000..3b35853 Binary files /dev/null and b/img1/enemy1.png differ diff --git a/img1/enemy2.png b/img1/enemy2.png new file mode 100644 index 0000000..176546b Binary files /dev/null and b/img1/enemy2.png differ diff --git a/img1/enemy3.png b/img1/enemy3.png new file mode 100644 index 0000000..74abbf0 Binary files /dev/null and b/img1/enemy3.png differ diff --git a/img1/fioletowylaser.png b/img1/fioletowylaser.png new file mode 100644 index 0000000..b0ca2c9 Binary files /dev/null and b/img1/fioletowylaser.png differ diff --git a/img1/me.png b/img1/me.png new file mode 100644 index 0000000..60ece07 Binary files /dev/null and b/img1/me.png differ diff --git a/img1/niebieskilaser.png b/img1/niebieskilaser.png new file mode 100644 index 0000000..6ea744b Binary files /dev/null and b/img1/niebieskilaser.png differ diff --git a/img1/szarylaser.png b/img1/szarylaser.png new file mode 100644 index 0000000..e558da9 Binary files /dev/null and b/img1/szarylaser.png differ diff --git a/img1/zoltylaser.png b/img1/zoltylaser.png new file mode 100644 index 0000000..b306ba8 Binary files /dev/null and b/img1/zoltylaser.png differ diff --git a/main1.py b/main1.py new file mode 100644 index 0000000..8116c99 --- /dev/null +++ b/main1.py @@ -0,0 +1,239 @@ +import pygame +import os +import time +import random +pygame.font.init() +width,height=1368,768 +WINDOW=pygame.display.set_mode((width,height)) +pygame.display.set_caption("gra-projekt") + +#load images +#enemies +enemy1=pygame.image.load(os.path.join("img1","enemy1.png")) +enemy2=pygame.image.load(os.path.join("img1","enemy2.png")) +enemy3=pygame.image.load(os.path.join("img1","enemy3.png")) +#playerplayer +ourself=pygame.image.load(os.path.join("img1","me.png")) +#lasers +violetlaser=pygame.image.load(os.path.join("img1","fioletowylaser.png")) +bluelaser=pygame.image.load(os.path.join("img1","niebieskilaser.png")) +yellowlaser=pygame.image.load(os.path.join("img1","zoltylaser.png")) +greylaser=pygame.image.load(os.path.join("img1","szarylaser.png")) +#background +bg=pygame.image.load(os.path.join("img1","bg.jpg")) + +class Laser: + def __init__(self,x,y,img): + self.x=x + self.y=y + self.img=img + self.mask=pygame.mask.from_surface(self.img) + def draw(self,window): + window.blit(self.img,(self.x,self.y)) + + def move(self,vel): + self.y+=vel + + def off_screen(self,height): + return not (self.y<=height and self.y>=0) + + def collision(self, obj): + return collide(self, obj) +class ship: #to interact + COOLDOWN= 30 + + def __init__(self, x, y, health=100): + self.x = x + self.y = y + self.health = health + self.ship_img = None + self.laser_img = None + self.lasers = [] + self.cool_down_counter = 0 + + def draw(self, window): + window.blit(self.ship_img,(self.x, self.y)) + for laser in self.lasers: + laser.draw(window) + + def move_lasers(self, vel, obj): + self.cooldown() + for laser in self.lasers: + laser.move(vel) + if laser.off_screen(height): + self.lasers.remove(laser) + elif laser.collision(obj): + obj.health -= 10 + self.lasers.remove(laser) + + def cooldown(self): + if self.cool_down_counter>self.COOLDOWN: + self.cool_down_counter=0 + elif self.cool_down_counter>0: + self.cool_down_counter+=1 + + def shoot(self): + if self.cool_down_counter == 0: + laser=Laser(self.x+25,self.y,self.laser_img) + self.lasers.append(laser) + self.cool_down_counter = 1 + + def get_width(self): + return self.ship_img.get_width() + + def get_height(self): + return self.ship_img.get_height() + +class Player(ship): + def __init__(self,x,y,health=100): + super().__init__(x,y,health) + self.ship_img=ourself + self.laser_img=violetlaser + self.mask=pygame.mask.from_surface(self.ship_img) + self.max_health=health + + def move_lasers(self, vel, objs): + self.cooldown() + for laser in self.lasers: + laser.move(vel) + if laser.off_screen(height): + self.lasers.remove(laser) + else: + for obj in objs: + if laser.collision(obj): + objs.remove(obj) + if laser in self.lasers: + self.lasers.remove(laser) + def draw(self,window): + super().draw(window) + self.healthbar(window) + def healthbar(self,window): + pygame.draw.rect(window,(255,0,0),(self.x,self.y+self.ship_img.get_height()+10, self.ship_img.get_width(),10)) + pygame.draw.rect(window,(0,255,0),(self.x,self.y+self.ship_img.get_height()+10, self.ship_img.get_width()*(self.health/self.max_health),10)) +class Enemy(ship): + ENEMY_MAP={ + "enemy1":(enemy1, greylaser), + "enemy2":(enemy2,yellowlaser), + "enemy3":(enemy3,bluelaser) + } + def __init__(self,x,y,enemy,health=100): + super().__init__(x,y,health) + self.ship_img,self.laser_img=self.ENEMY_MAP[enemy] + self.mask=pygame.mask.from_surface(self.ship_img) + def move(self,vel): + self.y+=vel + + def shoot(self): + if self.cool_down_counter == 0: + laser = Laser(self.x+10, self.y, self.laser_img) + self.lasers.append(laser) + self.cool_down_counter = 1 +def collide(obj1,obj2): + offset_x=obj2.x-obj1.x + offset_y=obj2.y-obj1.y + return obj1.mask.overlap(obj2.mask,(offset_x,offset_y)) !=None #(x,y) + +def main(): + run=True + FPS=60 + level=0 + lives=5 + player_vel=5 + player=Player(600,650) + main_font=pygame.font.SysFont("comicsans",50) + lost_font=pygame.font.SysFont("comicsans",60) + + enemies=[] + wave_length=0 + enemy_vel=1 + + laser_vel=6 + lost=False + lost_count=0 + clock=pygame.time.Clock() + + def redraw_window(): + WINDOW.blit(bg,(0,0)) + #draw text + lives_label=main_font.render(f"Lives:{lives}",1,(240,0,0)) + level_label=main_font.render(f"Level:{level}",1,(240,0,0)) + WINDOW.blit(lives_label,(10,10)) + WINDOW.blit(level_label,(width-level_label.get_width()-10,10)) + + for enemy in enemies: + enemy.draw(WINDOW) + + player.draw(WINDOW) + if lost: + lost_label=lost_font.render("You Lost!",1,(255,255,255)) + WINDOW.blit(lost_label,(width/2-lost_label.get_width()/2,height/2)) + pygame.display.update() #lastone + while run: + clock.tick(FPS) + redraw_window() + if lives <=0 or player.health<=0: + lost=True + lost_count+=1 + if lost: + if lost_count>FPS*3: + run=False + else: + continue + if len(enemies)==0: + level+=1 + wave_length+=5 + for i in range(wave_length): + enemy=Enemy(random.randrange(50,width-100),random.randrange(-100,0),random.choice(["enemy1","enemy2","enemy3"])) + enemies.append(enemy) + + for event in pygame.event.get(): + if event.type==pygame.QUIT: + quit() + keys=pygame.key.get_pressed()#to chceck 2 keys in 1 time + + if keys[pygame.K_UP]and player.y -player_vel: + player.y -=player_vel + if keys[pygame.K_DOWN] and player.y+player_vel+player.get_height()0: + player.x -= player_vel + if keys[pygame.K_RIGHT]and player.x +player_vel +player.get_width() height: + lives-=1 + enemies.remove(enemy) + + player.move_lasers(-laser_vel,enemies) + + + +def main_menu(): + title_font = pygame.font.SysFont("comicsans", 70) + run = True + while run: + WINDOW.blit(bg, (0,0)) + title_label = title_font.render("Press the mouse to begin...", 1, (255,255,255)) + WINDOW.blit(title_label, (width/2 - title_label.get_width()/2, 350)) + pygame.display.update() + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + if event.type == pygame.MOUSEBUTTONDOWN: + main() + pygame.quit() + +main_menu() +main() \ No newline at end of file