Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame.display
- from pygame import *
- import ctypes
- pygame.init()
- class Window:
- windowx = 1280
- windowy = 720
- window = pygame.display.set_mode((windowx, windowy))
- class Methods:
- @staticmethod
- def quit():
- for Event in pygame.event.get():
- if Event.type == QUIT:
- pygame.quit()
- exit()
- class Start:
- @staticmethod
- def start():
- # Some asset declaration right up before game starts
- Player.createplayer()
- Text.createtext(Input.playerinput, 50, 50)
- Text.createtext(' W S A D', 50, 20)
- Text.createtext(Player.playerwheel[0].posx, 500, 20)
- Text.createtext(Player.playerwheel[0].posy, 500, 50)
- Game.main()
- class Game:
- clock = pygame.time.Clock()
- @staticmethod
- def main():
- while True:
- Game.clock.tick(60)
- Methods.quit()
- Input.player()
- Physics.playerphys()
- Render.render()
- class Player:
- playercount = 0
- playerwheel = []
- @staticmethod
- def createplayer():
- Player.playerwheel.append(Player.playercount)
- Player.playerwheel[Player.playercount] = Player()
- Player.playercount += 1
- def __init__(self):
- self.posx = 200
- self.posy = 200
- self.spdx = 0
- self.spdy = 0
- self.color = (0, 0, 0)
- def draw(self):
- pygame.draw.rect(Window.window, self.color, (self.posx, self.posy, 10, 10))
- class Input:
- playerinput = [False, False, False, False]
- @staticmethod
- def player():
- # W
- if pygame.key.get_pressed()[K_w]:
- if not Input.playerinput[1]:
- Input.playerinput[0] = True
- else:
- Input.playerinput[0] = False
- # S
- if pygame.key.get_pressed()[K_s]:
- if not Input.playerinput[0]:
- Input.playerinput[1] = True
- else:
- Input.playerinput[1] = False
- # A
- if pygame.key.get_pressed()[K_a]:
- if not Input.playerinput[3]:
- Input.playerinput[2] = True
- else:
- Input.playerinput[2] = False
- # D
- if pygame.key.get_pressed()[K_d]:
- if not Input.playerinput[2]:
- Input.playerinput[3] = True
- else:
- Input.playerinput[3] = False
- class Physics:
- plyrslowdownx = 0.5
- plyrslowdowny = 0.5
- plyrspdboostx = 2
- plyrspdboosty = 2
- @staticmethod
- def playerphys():
- # Placeholder
- # Y Speedbreaker limit
- if Player.playerwheel[0].spdy > 10:
- Player.playerwheel[0].spdy = 10
- elif Player.playerwheel[0].spdy < -10:
- Player.playerwheel[0].spdy = -10
- # X Speedbreaker limit
- if Player.playerwheel[0].spdx > 10:
- Player.playerwheel[0].spdx = 10
- elif Player.playerwheel[0].spdx < -10:
- Player.playerwheel[0].spdx = -10
- # Player input force
- if Input.playerinput[0]:
- Player.playerwheel[0].spdy -= Physics.plyrspdboosty
- if Input.playerinput[1]:
- Player.playerwheel[0].spdy += Physics.plyrspdboosty
- if Input.playerinput[2]:
- Player.playerwheel[0].spdx -= Physics.plyrspdboostx
- if Input.playerinput[3]:
- Player.playerwheel[0].spdx += Physics.plyrspdboostx
- # Add Friction
- # Y
- if Player.playerwheel[0].spdy > 0:
- Player.playerwheel[0].spdy -= Physics.plyrslowdowny
- elif Player.playerwheel[0].spdy < 0:
- Player.playerwheel[0].spdy += Physics.plyrslowdowny
- # X
- if Player.playerwheel[0].spdx > 0:
- Player.playerwheel[0].spdx -= Physics.plyrslowdownx
- elif Player.playerwheel[0].spdx < 0:
- Player.playerwheel[0].spdx += Physics.plyrslowdownx
- # Change playerpos after physics
- Player.playerwheel[0].posy += Player.playerwheel[0].spdy
- Player.playerwheel[0].posx += Player.playerwheel[0].spdx
- class Text:
- textfont = pygame.font.SysFont("monospace", 20)
- # this is the place where text obects are stored at
- textcount = 0
- textwheel = []
- # this is a method that receives arguments and creates a text object out of them
- # that object is put inside the list above
- @staticmethod
- def createtext(text, posx, posy):
- Text.textwheel.append(Text.textcount)
- Text.textwheel[Text.textcount] = Text(text, posx, posy)
- Text.textcount += 1
- # path and text are almost the same thing
- # path is supposed to hold the actual path to the object i want to reference every frame
- # whilst text is the actual text versio that is to be displayed
- def __init__(self, text, posx, posy):
- self.path = text
- self.text = str(self.path)
- self.texposx = posx
- self.texposy = posy
- self.surface = Text.textfont.render(self.text, True, (0, 0, 0))
- # every frame a function runs through the list and updates the text to be the str version of the path
- @staticmethod
- def txtupd():
- for textnum in Text.textwheel:
- textnum.text = str(textnum.path)
- textnum.surface = Text.textfont.render(textnum.text, True, (0, 0, 0))
- Window.window.blit(textnum.surface, (textnum.texposx, textnum.texposy))
- class Render:
- @staticmethod
- def render():
- Window.window.fill((255, 255, 255))
- Player.playerwheel[0].draw()
- Text.txtupd()
- pygame.display.update()
- if __name__ == '__main__':
- Start.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement