Advertisement
Guest User

Game

a guest
Jun 29th, 2022
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.64 KB | None | 0 0
  1. import pygame.display
  2. from pygame import *
  3. import ctypes
  4.  
  5. pygame.init()
  6.  
  7.  
  8. class Window:
  9.     windowx = 1280
  10.     windowy = 720
  11.     window = pygame.display.set_mode((windowx, windowy))
  12.  
  13.  
  14. class Methods:
  15.     @staticmethod
  16.     def quit():
  17.         for Event in pygame.event.get():
  18.             if Event.type == QUIT:
  19.                 pygame.quit()
  20.                 exit()
  21.  
  22.  
  23. class Start:
  24.     @staticmethod
  25.     def start():
  26.         # Some asset declaration right up before game starts
  27.         Player.createplayer()
  28.  
  29.         Text.createtext(Input.playerinput, 50, 50)
  30.         Text.createtext(' W  S  A  D', 50, 20)
  31.         Text.createtext(Player.playerwheel[0].posx, 500, 20)
  32.         Text.createtext(Player.playerwheel[0].posy, 500, 50)
  33.         Game.main()
  34.  
  35.  
  36. class Game:
  37.     clock = pygame.time.Clock()
  38.  
  39.     @staticmethod
  40.     def main():
  41.         while True:
  42.             Game.clock.tick(60)
  43.             Methods.quit()
  44.             Input.player()
  45.             Physics.playerphys()
  46.             Render.render()
  47.  
  48.  
  49. class Player:
  50.     playercount = 0
  51.     playerwheel = []
  52.  
  53.     @staticmethod
  54.     def createplayer():
  55.         Player.playerwheel.append(Player.playercount)
  56.         Player.playerwheel[Player.playercount] = Player()
  57.         Player.playercount += 1
  58.  
  59.     def __init__(self):
  60.         self.posx = 200
  61.         self.posy = 200
  62.         self.spdx = 0
  63.         self.spdy = 0
  64.         self.color = (0, 0, 0)
  65.  
  66.     def draw(self):
  67.         pygame.draw.rect(Window.window, self.color, (self.posx, self.posy, 10, 10))
  68.  
  69.  
  70. class Input:
  71.     playerinput = [False, False, False, False]
  72.  
  73.     @staticmethod
  74.     def player():
  75.         # W
  76.         if pygame.key.get_pressed()[K_w]:
  77.             if not Input.playerinput[1]:
  78.                 Input.playerinput[0] = True
  79.         else:
  80.             Input.playerinput[0] = False
  81.         # S
  82.         if pygame.key.get_pressed()[K_s]:
  83.             if not Input.playerinput[0]:
  84.                 Input.playerinput[1] = True
  85.         else:
  86.             Input.playerinput[1] = False
  87.         # A
  88.         if pygame.key.get_pressed()[K_a]:
  89.             if not Input.playerinput[3]:
  90.                 Input.playerinput[2] = True
  91.         else:
  92.             Input.playerinput[2] = False
  93.         # D
  94.         if pygame.key.get_pressed()[K_d]:
  95.             if not Input.playerinput[2]:
  96.                 Input.playerinput[3] = True
  97.         else:
  98.             Input.playerinput[3] = False
  99.  
  100.  
  101. class Physics:
  102.     plyrslowdownx = 0.5
  103.     plyrslowdowny = 0.5
  104.  
  105.     plyrspdboostx = 2
  106.     plyrspdboosty = 2
  107.  
  108.     @staticmethod
  109.     def playerphys():
  110.  
  111.         # Placeholder
  112.         # Y Speedbreaker limit
  113.         if Player.playerwheel[0].spdy > 10:
  114.             Player.playerwheel[0].spdy = 10
  115.         elif Player.playerwheel[0].spdy < -10:
  116.             Player.playerwheel[0].spdy = -10
  117.         # X Speedbreaker limit
  118.         if Player.playerwheel[0].spdx > 10:
  119.             Player.playerwheel[0].spdx = 10
  120.         elif Player.playerwheel[0].spdx < -10:
  121.             Player.playerwheel[0].spdx = -10
  122.  
  123.         # Player input force
  124.         if Input.playerinput[0]:
  125.             Player.playerwheel[0].spdy -= Physics.plyrspdboosty
  126.         if Input.playerinput[1]:
  127.             Player.playerwheel[0].spdy += Physics.plyrspdboosty
  128.         if Input.playerinput[2]:
  129.             Player.playerwheel[0].spdx -= Physics.plyrspdboostx
  130.         if Input.playerinput[3]:
  131.             Player.playerwheel[0].spdx += Physics.plyrspdboostx
  132.  
  133.         # Add Friction
  134.         # Y
  135.         if Player.playerwheel[0].spdy > 0:
  136.             Player.playerwheel[0].spdy -= Physics.plyrslowdowny
  137.         elif Player.playerwheel[0].spdy < 0:
  138.             Player.playerwheel[0].spdy += Physics.plyrslowdowny
  139.         # X
  140.         if Player.playerwheel[0].spdx > 0:
  141.             Player.playerwheel[0].spdx -= Physics.plyrslowdownx
  142.         elif Player.playerwheel[0].spdx < 0:
  143.             Player.playerwheel[0].spdx += Physics.plyrslowdownx
  144.  
  145.         # Change playerpos after physics
  146.         Player.playerwheel[0].posy += Player.playerwheel[0].spdy
  147.         Player.playerwheel[0].posx += Player.playerwheel[0].spdx
  148.  
  149.  
  150. class Text:
  151.     textfont = pygame.font.SysFont("monospace", 20)
  152.     # this is the place where text obects are stored at
  153.     textcount = 0
  154.     textwheel = []
  155.  
  156.     # this is a method that receives arguments and creates a text object out of them
  157.     # that object is put inside the list above
  158.     @staticmethod
  159.     def createtext(text, posx, posy):
  160.         Text.textwheel.append(Text.textcount)
  161.         Text.textwheel[Text.textcount] = Text(text, posx, posy)
  162.         Text.textcount += 1
  163.  
  164.     # path and text are almost the same thing
  165.     # path is supposed to hold the actual path to the object i want to reference every frame
  166.     # whilst text is the actual text versio that is to be displayed
  167.     def __init__(self, text, posx, posy):
  168.         self.path = text
  169.         self.text = str(self.path)
  170.         self.texposx = posx
  171.         self.texposy = posy
  172.         self.surface = Text.textfont.render(self.text, True, (0, 0, 0))
  173.  
  174.     # every frame a function runs through the list and updates the text to be the str version of the path
  175.     @staticmethod
  176.     def txtupd():
  177.         for textnum in Text.textwheel:
  178.             textnum.text = str(textnum.path)
  179.             textnum.surface = Text.textfont.render(textnum.text, True, (0, 0, 0))
  180.             Window.window.blit(textnum.surface, (textnum.texposx, textnum.texposy))
  181.  
  182.  
  183. class Render:
  184.     @staticmethod
  185.     def render():
  186.         Window.window.fill((255, 255, 255))
  187.         Player.playerwheel[0].draw()
  188.         Text.txtupd()
  189.         pygame.display.update()
  190.  
  191.  
  192. if __name__ == '__main__':
  193.     Start.start()
  194.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement