Advertisement
jootiee

Недо-третьи шаги котика

Nov 25th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.12 KB | None | 0 0
  1. import pygame as pg
  2. import random
  3. from math import sin
  4.  
  5. RESOLUTION = (1600, 900)
  6. FPS = 144
  7.  
  8.  
  9. WHITE = (255, 255, 255)
  10. BLACK = (0,   0,   0)
  11. BG_COLOR = (95, 75, 102)  # lightskyblue
  12.  
  13. # PICS
  14. CAT = 'cat.png'
  15. PEPEGA = 'pepega.png'
  16. RAT = 'rat.png'
  17. COIN_SILVER = 'silver.png'
  18. COIN_GOLD = 'gold.png'
  19.  
  20.  
  21. class Cat_abstract:
  22.     def __init__(self, x = 0, y = 0, size = 100, speed = 10, img = CAT):
  23.         self.size = size
  24.         self.x = x
  25.         self.y = y
  26.         self.speed = speed
  27.         self.img = pg.image.load(img)
  28.         self.img = pg.transform.scale(self.img, (self.size, self.size))
  29.  
  30.     def draw(self, surface):
  31.         surface.blit(self.img, (self.x, self.y))
  32.  
  33.     def border_check(self):
  34.         if self.x > RESOLUTION[0] - (self.size // 2):
  35.             self.x = 0 - (self.size // 2)
  36.         if self.x < 0 - (self.size // 2):
  37.             self.x = RESOLUTION[0] - (self.size // 2)
  38.  
  39.         if self.y > RESOLUTION[1] - (self.size // 2):
  40.             self.y = 0 - (self.size // 2)
  41.         if self.y < 0 - (self.size // 2):
  42.             self.y = RESOLUTION[1] - (self.size // 2)
  43.  
  44.     def update(self, *args):
  45.         pass
  46.  
  47. class Coin_abstract:
  48.     def __init__(self, x = 0, y = 0, size = 100, maxspeed = 3, img = COIN_SILVER):
  49.         self.size = size
  50.         self.x = random.randint(0 + self.size, RESOLUTION[0] - self.size)
  51.         self.y = random.randint(0 - self.size, RESOLUTION[1] + self.size)
  52.         self.img = pg.image.load(img)
  53.         self.img = pg.transform.scale(self.img, (self.size, self.size))
  54.            
  55.     def draw(self, surface):
  56.         surface.blit(self.img, (self.x, self.y))
  57.  
  58.     def update(self, *args):
  59.         pass
  60.  
  61.  
  62. # class Coin(Coin_abstract):
  63. #     def __init__(self, x = 0, y = 0, size = 300, img = COIN_SILVER):
  64. #         Coin_abstract.__init__(self, size, x, y, img)
  65. #         self.x = random.randint(self.size, RESOLUTION[0])
  66. #         self.y = random.randint(self.size, RESOLUTION[1])
  67.  
  68. #     def update(self, *args):
  69. #         return
  70.        
  71.  
  72.  
  73. class Cat_random(Cat_abstract):
  74.     def __init__(self, x = 0, y = 0, size = 100, speed = 10, img = PEPEGA):
  75.         Cat_abstract.__init__(self, x, y, size, speed, img)
  76.  
  77.     def update(self, *args):
  78.         dx = random.randint(-10, 10)
  79.         dy = random.randint(-10, 10)
  80.         self.x += dx
  81.         self.y += dy
  82.         self.border_check()
  83.  
  84.  
  85.  
  86. class Cat_border(Cat_abstract):
  87.     def __init__(self, x = 0, y = 0, size = 100, speed = 5, img = RAT):
  88.         Cat_abstract.__init__(self, x, y, size, speed, img)
  89.         self.rat_facing = 'right'
  90.  
  91.     def update(self, *args):
  92.         if self.rat_facing == 'right':
  93.             if self.x < RESOLUTION[0] - self.size:
  94.                 self.x += self.speed
  95.             else:
  96.                 self.rat_facing = 'down'
  97.         if self.rat_facing == 'down':
  98.             if self.y < RESOLUTION[1] - self.size:
  99.                 self.y += self.speed
  100.             else:
  101.                 self.rat_facing = 'left'
  102.                 self.img = pg.transform.flip(self.img, True, False)
  103.         if self.rat_facing == 'left':
  104.             if self.x > 0:
  105.                 self.x -= self.speed
  106.             else:
  107.                 self.rat_facing = 'up'
  108.         if self.rat_facing == 'up':
  109.             if self.y > 0:
  110.                 self.y -= self.speed
  111.             else:
  112.                 self.rat_facing = 'right'
  113.                 self.img = pg.transform.flip(self.img, True, False)
  114.  
  115.  
  116.  
  117. class Cat_player(Cat_abstract):
  118.     def __init__(self, x = 0, y = 0, size = 100, speed = 5, img = CAT):
  119.         Cat_abstract.__init__(self, x, y, size, speed, img)
  120.  
  121.     def update(self, up, down, left, right):
  122.         if left == right:
  123.             pass
  124.         elif left:
  125.             self.x -= self.speed
  126.         else:
  127.             self.x += self.speed
  128.         if up == down:
  129.             pass
  130.         elif up:
  131.             self.y -= self.speed
  132.         else:
  133.             self.y += self.speed
  134.         self.border_check()
  135.  
  136.  
  137. class Game:
  138.     def __init__(self):
  139.         pg.init()
  140.         self.display = pg.display.set_mode(RESOLUTION)
  141.         pg.display.set_caption('Вторые шаги котика')
  142.         self.clock = pg.time.Clock()
  143.         self.running = True
  144.         self.down = self.up = self.left = self.right = False
  145.         self.cat = Cat_player(size=200)
  146.         self.cat_random = Cat_random(size=200)
  147.         self.cat_border = Cat_border(size=200)
  148.         self.coin = Coin(size=300)
  149.  
  150.     def run(self):
  151.         while self.running:
  152.             self.events()
  153.             self.update()
  154.             self.render()
  155.  
  156.     def events(self):
  157.         events = pg.event.get()
  158.         for event in events:
  159.             if event.type == pg.QUIT:
  160.                 self.running = False
  161.             if event.type == pg.KEYDOWN:
  162.                 if event.key == pg.K_s:
  163.                     self.down = True
  164.                 if event.key == pg.K_w:
  165.                     self.up = True
  166.                 if event.key == pg.K_a:
  167.                     self.left = True
  168.                 if event.key == pg.K_d:
  169.                     self.right = True
  170.             if event.type == pg.KEYUP:
  171.                 if event.key == pg.K_s:
  172.                     self.down = False
  173.                 if event.key == pg.K_w:
  174.                     self.up = False
  175.                 if event.key == pg.K_a:
  176.                     self.left = False
  177.                 if event.key == pg.K_d:
  178.                     self.right = False
  179.                 if event.key == pg.K_ESCAPE:
  180.                     self.running = False
  181.  
  182.     def update(self):
  183.         self.clock.tick(FPS)
  184.         self.cat.update(self.up, self.down, self.left, self.right)
  185.         self.cat_random.update(self.up, self.down, self.left, self.right)
  186.         self.cat_border.update(self.up, self.down, self.left, self.right)
  187.         self.coin.update(self.up, self.down)
  188.  
  189.     def render(self):
  190.         self.display.fill(BG_COLOR)
  191.         self.coin.draw(self.display)
  192.         self.cat.draw(self.display)
  193.         self.cat_random.draw(self.display)
  194.         self.cat_border.draw(self.display)
  195.         pg.display.update()
  196.  
  197.  
  198. if __name__ == '__main__':
  199.     game = Game()
  200.     game.run()
  201.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement