Dec-22-2018, 02:14 PM
Hey there!
I'm struggeling a bit, I recoded my "game" to avoid problems with local variables, but now my game doesn't react to anything anymore and pictures are only half visible.
At least it doesn't crash anymore like it used to...
I would be very thankful if someone could look over my code and would help with that problem!
(I am very new to Python and programming in general, so don't be too harsh on my inefficient coding ^^)
Here is the code:
(For an explanation: I am trying to code a "Picross" Game)
This is my gameloop:
I'm struggeling a bit, I recoded my "game" to avoid problems with local variables, but now my game doesn't react to anything anymore and pictures are only half visible.
At least it doesn't crash anymore like it used to...
I would be very thankful if someone could look over my code and would help with that problem!
(I am very new to Python and programming in general, so don't be too harsh on my inefficient coding ^^)
Here is the code:
(For an explanation: I am trying to code a "Picross" Game)
This is my gameloop:
def game_loop(): End = False while not End: menu(mx,my) mposx = 0 mposy = 0 Lifecounter = 3 Main = True q1check = False q2check = False q3check = False q4check = False q5check = False q6check = False # MAIN MENU ################################## while Main: menu (mx,my) for event in pygame.event.get(): if event.type == QUIT: Main = False End = True if event.type == pygame.MOUSEBUTTONUP: if 1: if q1check == False: q1 = True Game = True Main = False if 2: if q2check == False: q2 = True Game = True Main = False if 3: if q3check == False: q3 = True Game = True Main = False if 4: if q4check == False: q4 = True Game = True Main = False if 5: if q5check == False: q5 = True Game = True Main = False if 6: if q6check == False: q6 = True Game = True Main = False if q1check == True and q2check == True and q3check == True and q4check == True and q5check == True and q6check == True: win(winx,winy) Main = win(winx,winy) End = win(winx,winy) # GAME ####################################### while Game: for event in pygame.event.get(): if event.type == QUIT: End = True if q1 == True: Fenster.fill(BLACK) Fenster.blit(q1png, (qpngx,qpngy)) q1game(q1png,qpngx,qpngy) q1check = q1game() q1 = False if q2 == True: Fenster.fill(BLACK) Fenster.blit(q2png, (qpngx,qpngy)) q2game() q2check = q2game() q1 = False if q3 == True: Fenster.fill(BLACK) Fenster.blit(q3png, (qpngx,qpngy)) q3game() q3check = q3game() q3 = False if q4 == True: Fenster.fill(BLACK) Fenster.blit(q4png, (qpngx,qpngy)) q4game() q4 = False if q5 == True: Fenster.fill(BLACK) Fenster.blit(q5png, (qpngx,qpngy)) q5game() q5check = q5game() q5 = False if q6 == True: Fenster.fill(BLACK) Fenster.blit(q6png, (qpngx,qpngy)) q6game() q6check = q6game() q6 = False pygame.display.update() clock.tick(FPS)The qXgame() parts are defined like this example:
def q1game(q1png,qpngx,qpngy): Fenster.blit(q1png, (qpngx,qpngy)) loop1 = True LC1 = 3 RC1 = 0 c1a1 = False c1a2 = False c1a3 = False c1a4 = False c1a5 = False c1a6 = False c1a7 = False c1a8 = False c1a9 = False c1a10 = False c1a11 = False c1b1 = False c1b2 = False c1b3 = False c1b4 = False c1b5 = False c1b6 = False c1b7 = False c1b8 = False c1b9 = False c1b10 = False c1b11 = False c1c1 = False c1c2 = False c1c3 = False c1c4 = False c1c5 = False c1c6 = False c1c7 = False c1c8 = False c1c9 = False c1c10 = False c1c11 = False # and so on (I cut the rest out) c1j8 = False c1j9 = False c1j10 = False c1j11 = False while loop1 == True: for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONUP: mposx, mposy = pygame.mouse.get_pos() rectangle (wx, wy, ww, wh, BLACK) # Q1 ### Row 1 ### if mposy >= qpngy+70 and mposy <= qpngy+100: if mposx >= qpngx+70 and mposx <= qpngy+99 and c1a1 == False: rectangle (qpngx+70, qpngy+70, 30, 30, ROSA) c1a1 = True if mposx >= qpngx+103 and mposx <= qpngy+132 and c1a2 == False: rectangle (qpngx+103, qpngy+70, 30, 30, ROSA) c1a2 = True if mposx >= qpngx+136 and mposx <= qpngy+165 and c1a3 == False: rectangle (qpngx+136, qpngy+70, 30, 30, ROSA) c1a3 = True if mposx >= qpngx+169 and mposx <= qpngy+198 and c1a4 == False: rectangle (qpngx+169, qpngy+70, 30, 30, ROSA) c1a4 = True if mposx >= qpngx+202 and mposx <= qpngy+231 and c1a5 == False: rectangle (qpngx+202, qpngy+70, 30, 30, ROSA) c1a5 = True if mposx >= qpngx+235 and mposx <= qpngy+264 and c1a6 == False: rectangle (qpngx+235, qpngy+70, 30, 30, ROSA) c1a6 = True if mposx >= qpngx+268 and mposx <= qpngy+297 and c1a7 == False: Fenster.blit(wrongpng (wx,wy)) LC1 = LC1 - 1 c1a7 = True if mposx >= qpngx+301 and mposx <= qpngy+330 and c1a8 == False: Fenster.blit(wrongpng (wx,wy)) LC1 = LC1 - 1 c1a8 = True if mposx >= qpngx+334 and mposx <= qpngy+363 and c1a9 == False: Fenster.blit(wrongpng (wx,wy)) LC1 = LC1 - 1 c1a9 = True if mposx >= qpngx+367 and mposx <= qpngy+396 and c1a10 == False: Fenster.blit(wrongpng (wx,wy)) LC1 = LC1 - 1 c1a10 = True if mposx >= qpngx+400 and mposx <= qpngy+429 and c1a11 == False: Fenster.blit(wrongpng (wx,wy)) LC1 = LC1 - 1 c1a11 = True # Then there are the 9 other rows equally designed (I used just this for testing, before copying it) if LC1 == 0: loop1 = False q1check = False if RC1 == 61: loop1 = False q1check = TrueIn case you are wondering, these are the other definitions I made and the overall structure
import pygame, sys from pygame.locals import * import time import random import pygame pygame.init() # CLOCK ###################################### FPS = 30 clock = pygame.time.Clock() # WINDOW #################################### width = 1200 height = 600 Fenster = pygame.display.set_mode((width,height)) pygame.display.set_caption('Sudoku in Cool') # VARIABLES ################################## BLACK = (0,0,0) GREY = (40,40,40) WHITE = (255,255,255) ROSA = (255,174,201) Main = True Game = False End = False menupng = pygame.image.load('Menu.png') mx = 0 my = 0 mw = 1200 mh = 600 wrongpng = pygame.image.load('wrong.png') wx = 500 wy = 300 ww = 75 wh = 75 winpng = pygame.image.load('win.png') winx = 30 winy = 400 winw = 100 winh = 50 picture = pygame.image.load('picture.png') qpngw = 435 qpngh = 402 qpngx = width/2 - qpngw/2 qpngy = height/2 - qpngh/2 q1png = pygame.image.load('Raster 1.png') q2png = pygame.image.load('Raster 2.png') q3png = pygame.image.load('Raster 3.png') q4png = pygame.image.load('Raster 4.png') q5png = pygame.image.load('Raster 5.png') q6png = pygame.image.load('Raster 6.png') def menu (mx,my): Fenster.blit(menupng, (mx,my)) menu (mx,my) def win(winx,winy): Main = True End = False Fenster.blit(winpng, (winx,winy)) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONUP: mposx, mposy = pygame.mouse.get_pos() if mposx > winx and mposx < winx+winw and mposy > winy and mposy < winy+winh: Fenster.blit(picture, (0,0)) if event.type == pygame.QUIT: Main = False End = True return Main return End def rectangle(rex, rey, rew, reh, color): pygame.draw.rect(Fenster, color, [rex, rey, rew, reh]) game_loop() pygame.quit ()Again, so thankful for feedback!