forked from InfoProjekt/game
		
	Merge pull request 'Dateien nach "/" hochladen' (#3) from lyzzy-patch-1 into main
Reviewed-on: Lyzzy/game#3
This commit is contained in:
		
						commit
						ef9e7a6ef1
					
				
					 2 changed files with 84 additions and 25 deletions
				
			
		
							
								
								
									
										17
									
								
								main.py
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								main.py
									
										
									
									
									
								
							|  | @ -27,8 +27,11 @@ def quitGame(): | |||
|     quit() | ||||
| 
 | ||||
| def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): | ||||
|     objects = [] | ||||
|     objects.append(MainCharacter('Herbert', 100, 'reddy.png', 125, 5, 1, 1, 50)) | ||||
|     main = [MainCharacter('Herbert', 100, 'reddy.png', 500, 500, 125, 5, 1, 1, 50)] | ||||
|     mobs=[] | ||||
|     mobs.append(Skeleton('s1', 50, 'reddy.png', 250, 250, 125, 5, 1, 1, 200)) | ||||
|     objects = [main,mobs] | ||||
| 
 | ||||
|     while running: | ||||
|         screen.fill('#000000') | ||||
|         events = pygame.event.get() | ||||
|  | @ -42,9 +45,13 @@ def play(screen, clock, running, background, isblack, WIDTH, HEIGHT): | |||
|         # fill the screen with an image to clear the screen | ||||
|         screen.blit(bg, (0, 0)) | ||||
| """  | ||||
|         for obj in objects: | ||||
|             obj.update(pygame.key.get_pressed()) | ||||
|             obj.draw(screen) | ||||
|         for thing in objects[0]: | ||||
|             thing.update(pygame.key.get_pressed()) | ||||
|             thing.draw(screen) | ||||
|          | ||||
|         for mob in objects[1]: | ||||
|             mob.update(objects) | ||||
|             mob.draw(screen) | ||||
|         # flip() the display to put your work on screen | ||||
|         pygame.display.flip() | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										92
									
								
								viecher.py
									
										
									
									
									
								
							
							
						
						
									
										92
									
								
								viecher.py
									
										
									
									
									
								
							|  | @ -1,14 +1,15 @@ | |||
| import pygame | ||||
| vec = pygame.math.Vector2 | ||||
| fps = 60 | ||||
| 
 | ||||
| class Character(): | ||||
|     def __init__(self, name, ms, sprite) -> None: | ||||
| class Objects(): | ||||
|     def __init__(self, name, ms, sprite, x, y) -> None: | ||||
|         self.name = name | ||||
|         self.speed = ms | ||||
|         with open(f'art/images/{sprite}') as i: | ||||
|             self.sprite = pygame.image.load(i) | ||||
|         self.x = 524 | ||||
|         self.y = 524 | ||||
|         self.x = x | ||||
|         self.y = y | ||||
|         self.hidden = False | ||||
| 
 | ||||
|         self.rect = pygame.Rect(self.x, self.y, self.sprite.get_width(), self.sprite.get_height()) | ||||
|  | @ -20,13 +21,13 @@ class Character(): | |||
|         screen.blit(self.sprite, self.rect) | ||||
| 
 | ||||
| 
 | ||||
| class NPC(Character): | ||||
| class NPC(Objects): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| class Fighter(Character): | ||||
|     def __init__(self, name, ms, sprite, health, damage, level, asp, atr) -> None: | ||||
|         super().__init__(name, ms, sprite) | ||||
| class Fighter(Objects): | ||||
|     def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr) -> None: | ||||
|         super().__init__(name, ms, sprite, x, y) | ||||
|         self.health = health | ||||
|         self.damage = damage | ||||
|         self.level = level | ||||
|  | @ -34,23 +35,74 @@ class Fighter(Character): | |||
|         self.attack_range = atr | ||||
| 
 | ||||
| class MainCharacter(Fighter): | ||||
|     def __init__(self, name, ms, sprite, health, damage, level, asp, atr, weapon=None, shield=None) -> None: | ||||
|         super().__init__(name, ms, sprite, health, damage, level, asp, atr) | ||||
|     def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, weapon=None, shield=None) -> None: | ||||
|         super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr) | ||||
|         self.attack_spell = weapon | ||||
|         self.shield_spell = shield | ||||
|         self.talking = False | ||||
| 
 | ||||
|     def update(self, keys): | ||||
|         if keys[pygame.K_w]: | ||||
|             self.y -= self.speed / fps | ||||
|         if keys[pygame.K_a]: | ||||
|             self.x -= self.speed / fps | ||||
|         if keys[pygame.K_s]: | ||||
|             self.y += self.speed / fps | ||||
|         if keys[pygame.K_d]: | ||||
|             self.x += self.speed / fps | ||||
|         moveto=vec(0,0) | ||||
|         if keys[pygame.K_w] or keys[pygame.K_UP]: | ||||
|             moveto += vec(0,-1) | ||||
|         if keys[pygame.K_a] or keys[pygame.K_LEFT]: | ||||
|             moveto += vec(-1,0) | ||||
|         if keys[pygame.K_s] or keys[pygame.K_DOWN]: | ||||
|             moveto += vec(0,1) | ||||
|         if keys[pygame.K_d] or keys[pygame.K_RIGHT]: | ||||
|             moveto += vec(1,0) | ||||
|         if not moveto == vec(0,0): | ||||
|             moveto.scale_to_length(self.speed) | ||||
|         self.x += moveto[0] / fps | ||||
|         self.y += moveto[1] / fps | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| class Mobs(Fighter): | ||||
|     def __init__(self, name, ms, sprite, health, damage, level, asp, atr, drops) -> None: | ||||
|         super().__init__(name, ms, sprite, health, damage, level, asp, atr) | ||||
|     def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, drops) -> None: | ||||
|         super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr) | ||||
|         self.drops = drops * (self.level / 2) | ||||
| 
 | ||||
| class Skeleton(Mobs): | ||||
|     def __init__(self, name, ms, sprite, x, y, health, damage, level, asp, atr, drops=0) -> None: | ||||
|         super().__init__(name, ms, sprite, x, y, health, damage, level, asp, atr, drops) | ||||
|         self.canAttack=True | ||||
|      | ||||
|     def follow(self,obj): | ||||
|         x=obj[0][0].x | ||||
|         y=obj[0][0].y | ||||
|         moveto = vec(x,y) - vec(self.x,self.y) | ||||
|         if not (moveto).length()<=self.attack_range: | ||||
|             moveto.scale_to_length(self.speed) | ||||
|             self.x += moveto[0]/fps | ||||
|             self.y += moveto[1]/fps | ||||
|         else: | ||||
|             self.attack(moveto,obj) | ||||
| 
 | ||||
|     def attack(self,moveto,obj): | ||||
|         if self.canAttack==True: | ||||
|             obj[1].append(Arrow("arrow",100,self.x,self.y,moveto)) | ||||
|         self.canAttack=False | ||||
|      | ||||
|     def cooldown(self): | ||||
|         pass | ||||
|          | ||||
| 
 | ||||
|     def update(self,obj): | ||||
|         self.follow(obj) | ||||
| 
 | ||||
| 
 | ||||
| class Weapons(Objects): | ||||
|     def __init__(self, name, ms, sprite, x, y, moveto) -> None: | ||||
|         super().__init__(name, ms, sprite, x, y) | ||||
| 
 | ||||
| class Arrow(Weapons): | ||||
|     def __init__(self, name, ms, x, y, moveto, sprite="textbox.png") -> None: | ||||
|         super().__init__(name, ms, sprite, x, y, moveto) | ||||
|         self.moveto = moveto | ||||
|      | ||||
|     def update(self,objects): | ||||
|         self.moveto.scale_to_length(self.speed) | ||||
|         self.x += self.moveto[0]/fps | ||||
|         self.y += self.moveto[1]/fps | ||||
		Loading…
	
	Add table
		
		Reference in a new issue