Removed pygame-menu and code cleanup
Added game class
This commit is contained in:
202
pygame-test.py
202
pygame-test.py
@@ -1,8 +1,8 @@
|
||||
import pygame
|
||||
import pygame_menu
|
||||
import random as rand
|
||||
from copy import deepcopy
|
||||
import modules.User as User
|
||||
import modules.Game_new as Game
|
||||
from modules.GameObject import *
|
||||
|
||||
pygame.init()
|
||||
@@ -12,47 +12,36 @@ MAINSCREEN = pygame.display.set_mode(MAINSCREEN_SIZE)
|
||||
PLAYGROUND = pygame.Surface((1024,728))
|
||||
|
||||
pygame.display.set_caption("Snake_v1")
|
||||
|
||||
WEISS = (255,255,255)
|
||||
SCHWARZ = (0,0,0)
|
||||
GRUEN = (0,255,0)
|
||||
ROT = (255,0,0)
|
||||
|
||||
### FONTS ###
|
||||
|
||||
fonts = {
|
||||
"font1" : pygame.font.SysFont("times new roman", 18),
|
||||
"font2" : pygame.font.SysFont("times new roman", 26),
|
||||
"font3" : pygame.font.SysFont("times new roman", 32),
|
||||
"font4" : pygame.font.SysFont("times new roman", 48)
|
||||
}
|
||||
my_font = pygame.font.SysFont('times new roman', 26)
|
||||
my_font2 = pygame.font.SysFont('times new roman', 32)
|
||||
my_font3 = pygame.font.SysFont('times new roman', 46)
|
||||
|
||||
WEISS = ( 255, 255, 255)
|
||||
SCHWARZ = (0,0,0)
|
||||
GRUEN = (0, 255, 0)
|
||||
ROT = (255,0,0)
|
||||
### TEXTLABELS ###
|
||||
surface_text_noplayer = fonts["font2"].render("Es existiert noch kein Spieler", True, SCHWARZ)
|
||||
surface_text_inputplayername = fonts["font1"].render("Bitte gib einen Namen ein: ", True, SCHWARZ)
|
||||
|
||||
|
||||
|
||||
active = True
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
#TODO: Make Grid for running Rect
|
||||
"""TODO: Add new controlstructure for User-class on first login
|
||||
Actually buggy if player logsin the first time, because there is no playerselected before there was an insterquery!!!
|
||||
|
||||
Make a live scoreboard
|
||||
|
||||
"""
|
||||
|
||||
#Behandelt später die Hauptschleife und Klassenobjekte
|
||||
class Game():
|
||||
__state = {"win":False, "lose":False, "paused":False}
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
|
||||
def scoreboard(self):
|
||||
pass
|
||||
|
||||
def spawn_fruit(self):
|
||||
pass
|
||||
|
||||
def spawn_player(self):
|
||||
pass
|
||||
#Handles all collided objects an adds it as playerfollower
|
||||
|
||||
def start_game():
|
||||
menu.disable()
|
||||
return 0
|
||||
|
||||
def apply_name(input):
|
||||
print(input)
|
||||
if(len(input) <= 0):
|
||||
@@ -65,18 +54,25 @@ def apply_name(input):
|
||||
|
||||
print(F"Hallo {User.getusername()}, dein letztes Spiel war am: {User.getlastlogin()} mit einem Highscore von: {User.gethighscore()}")
|
||||
|
||||
menu.disable()
|
||||
#TODO: Add function for save name
|
||||
pass
|
||||
|
||||
surface_menu = pygame.Surface((400, 500))
|
||||
surface_menu.fill((244,244,244))
|
||||
surface_menu_rect = surface_menu.get_rect()
|
||||
|
||||
|
||||
|
||||
def percent_from_screen(base:int, percent:int) -> int:
|
||||
|
||||
perc_hundred = base/100
|
||||
|
||||
return int(perc_hundred*percent)
|
||||
|
||||
|
||||
|
||||
game = Game.Game()
|
||||
User = User.User()
|
||||
|
||||
menu = pygame_menu.Menu("Snake v1.0", 400, 300,)
|
||||
menu.add.text_input("Name: ", onreturn=(apply_name))
|
||||
menu.add.button('Play', start_game)
|
||||
menu.add.button('Quit', pygame_menu.events.EXIT)
|
||||
menu.mainloop(MAINSCREEN)
|
||||
|
||||
|
||||
player = Player("Player", PLAYGROUND, PLAYGROUND.get_size(), 100, 100, size=40)
|
||||
|
||||
@@ -103,84 +99,94 @@ invert = False
|
||||
|
||||
counter = 0
|
||||
|
||||
#TESTOBJECT = GameObject_new("Testobjekt", MAINSCREEN, MAINSCREEN_SIZE, 0, 0)
|
||||
#print(help(TESTOBJECT))
|
||||
#TESTOBJECT.printall_attributes()
|
||||
|
||||
#Fenster-Hauptschleife+
|
||||
#Fenster-Hauptschleife
|
||||
|
||||
spawn_fruit = True
|
||||
game_started = False
|
||||
text = ""
|
||||
|
||||
game.change_state("menu")
|
||||
|
||||
while active == True:
|
||||
MAINSCREEN.fill((255,255,255))
|
||||
MAINSCREEN.fill((55,148,38))
|
||||
for event in pygame.event.get():
|
||||
if (event.type == pygame.QUIT):
|
||||
print("Programm wird geschlossen!")
|
||||
#print(spawned_entities, end="\n")
|
||||
active = False
|
||||
elif (event.type == pygame.KEYDOWN):
|
||||
if (event.key == pygame.K_UP):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["down"] != True):
|
||||
player.change_direction("up")
|
||||
elif (event.key == pygame.K_DOWN):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["up"] != True):
|
||||
player.change_direction("down")
|
||||
elif (event.key == pygame.K_RIGHT):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["left"] != True):
|
||||
player.change_direction("right")
|
||||
elif (event.key == pygame.K_LEFT):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["right"] != True):
|
||||
player.change_direction("left")
|
||||
|
||||
if(game.get_state("started")):
|
||||
if (event.type == pygame.KEYDOWN):
|
||||
if (event.key == pygame.K_UP):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["down"] != True):
|
||||
player.change_direction("up")
|
||||
elif (event.key == pygame.K_DOWN):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["up"] != True):
|
||||
player.change_direction("down")
|
||||
elif (event.key == pygame.K_RIGHT):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["left"] != True):
|
||||
player.change_direction("right")
|
||||
elif (event.key == pygame.K_LEFT):
|
||||
game_started = True
|
||||
if(player.get_playermovedirection()["right"] != True):
|
||||
player.change_direction("left")
|
||||
|
||||
if(game.get_state("menu")):
|
||||
if(event.type == pygame.KEYDOWN):
|
||||
print(event.unicode)
|
||||
text += event.unicode
|
||||
|
||||
text_surface_score = my_font.render('Score: '+str(player.get_player_score()), True, (0, 0, 0))
|
||||
text_surface_player = my_font.render("Player: " + User.getusername(), True, SCHWARZ, None)
|
||||
PLAYGROUND.fill((255,255,255))
|
||||
|
||||
MAINSCREEN.blit(text_surface_score, (MAINSCREEN_SIZE[0]/2-text_surface_score.get_size()[0]/2,0)) #Paints the Scoreboard in Top/Center
|
||||
MAINSCREEN.blit(text_surface_player, (10, 0))
|
||||
text_test = my_font.render("Test", True, SCHWARZ, None)
|
||||
|
||||
if(spawn_fruit == True):
|
||||
fruit = Fruit("Fruit", PLAYGROUND, PLAYGROUND.get_size(), init_pos_x=rand.randint(0, PLAYGROUND.get_size()[0]-40), init_pos_y=rand.randint(0, PLAYGROUND.get_size()[1]-40), color=ROT, rect_size=40, score_points=10, sprite=fruits[rand.randint(0, len(fruits)-1)])
|
||||
spawn_fruit = False
|
||||
text_out = my_font.render(text, True, SCHWARZ, None)
|
||||
|
||||
if(fruit):
|
||||
fruit.draw()
|
||||
|
||||
|
||||
pygame.draw.line(MAINSCREEN, SCHWARZ, (0,38), (MAINSCREEN_SIZE[0], 38), 2)
|
||||
|
||||
PLAYGROUND.fill((244,244,244))
|
||||
PLAYGROUND.blit(text_out, (MAINSCREEN_SIZE[0]/2, MAINSCREEN_SIZE[1]/2))
|
||||
#pygame.draw.rect(surface_menu, (0,0,0), (0,0,400,500), 1, 7)
|
||||
#PLAYGROUND.blit(surface_menu, (20,20))
|
||||
|
||||
if(User.checkuserdb() == False):
|
||||
PLAYGROUND.blit(surface_text_noplayer, (MAINSCREEN_SIZE[0]/2 - surface_text_noplayer.get_width()/2, 10))
|
||||
PLAYGROUND.blit(surface_text_inputplayername, (MAINSCREEN_SIZE[0]/2 - surface_text_inputplayername.get_width()/2, 40))
|
||||
|
||||
|
||||
player.draw()
|
||||
if(game_started == True and player.collide_self() == False):
|
||||
player.move(40)
|
||||
if(game.get_state("started")):
|
||||
MAINSCREEN.blit(text_surface_score, (MAINSCREEN_SIZE[0]/2-text_surface_score.get_size()[0]/2,0)) #Paints the Scoreboard in Top/Center
|
||||
MAINSCREEN.blit(text_surface_player, (10, 0))
|
||||
|
||||
if(spawn_fruit == True):
|
||||
fruit = Fruit("Fruit", PLAYGROUND, PLAYGROUND.get_size(), init_pos_x=rand.randint(0, PLAYGROUND.get_size()[0]-40), init_pos_y=rand.randint(0, PLAYGROUND.get_size()[1]-40), color=ROT, rect_size=40, score_points=10, sprite=fruits[rand.randint(0, len(fruits)-1)])
|
||||
spawn_fruit = False
|
||||
|
||||
if(player.collide_self()):
|
||||
game_started == False
|
||||
gameovertext = my_font2.render("Game Over!", True, SCHWARZ)
|
||||
if(player.get_player_score() > User.gethighscore()):
|
||||
User.update_user_highscore(player.get_player_score())
|
||||
PLAYGROUND.blit(gameovertext, (MAINSCREEN_SIZE[0]/2-gameovertext.get_size()[0]/2, MAINSCREEN_SIZE[1]/2-gameovertext.get_size()[1]/2))
|
||||
if(fruit):
|
||||
fruit.draw()
|
||||
|
||||
|
||||
player.draw()
|
||||
if(game_started == True and player.collide_self() == False):
|
||||
player.move(40)
|
||||
|
||||
if(player.collide_self()):
|
||||
game_started == False
|
||||
gameovertext = my_font2.render("Game Over!", True, SCHWARZ)
|
||||
if(player.get_player_score() > User.gethighscore()):
|
||||
User.update_user_highscore(player.get_player_score())
|
||||
PLAYGROUND.blit(gameovertext, (MAINSCREEN_SIZE[0]/2-gameovertext.get_size()[0]/2, MAINSCREEN_SIZE[1]/2-gameovertext.get_size()[1]/2))
|
||||
|
||||
|
||||
if(player.collide_fruit(fruit.get_rect()) == True and fruit):
|
||||
player.add_body()
|
||||
player.inc_score(fruit.get_score_points())
|
||||
del fruit
|
||||
spawn_fruit=True
|
||||
|
||||
#Zeichnet alle Verfolgerobjekte, sofern sie vorliegend sind
|
||||
#TODO: Follower sollen ab dem zweiten Objekt dem vorangegangenen Objekt folgen und nicht dem player
|
||||
|
||||
#if(colided_objects):
|
||||
# colided_objects[0].set_position_player(player.get_position(), player.get_playermovedirection(), True)
|
||||
|
||||
#print("Objekt-Koordinaten= X: "+str(rect1.x)+" Y: "+str(rect1.y)+"", end="\r")
|
||||
|
||||
#Displayflip sorgt dafür, dass das Fenster entsprechend der Tickrate aktualisiert wird
|
||||
#pygame.display.flip()
|
||||
|
||||
if(player.collide_fruit(fruit.get_rect()) == True and fruit):
|
||||
player.add_body()
|
||||
player.inc_score(fruit.get_score_points())
|
||||
del fruit
|
||||
spawn_fruit=True
|
||||
|
||||
MAINSCREEN.blit(PLAYGROUND, (0,40))
|
||||
pygame.display.flip()
|
||||
|
||||
Reference in New Issue
Block a user