Aug-23-2018, 12:45 AM
(This post was last modified: Aug-23-2018, 12:45 AM by TheNumericDolfin.)
import pygame from pygame.locals import * import os pygame.init() def keyhandler(screenxsize, screenysize, mouseclicked): keycombo = False running = True keypressed = False key = [] keysheld = pygame.key.get_pressed() mousestate = pygame.mouse.get_pressed() mouseheld = mousestate[0] opressed = False mpos = pygame.mouse.get_pos() bob = 0 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False print("Quitting") if event.type == pygame.KEYDOWN: keypressed = True if keysheld[K_LSHIFT]: caps = True else: caps = False print("keypressed") if event.key == pygame.K_a: if caps == True: key.append("A") else: key.append("a") if event.key == pygame.K_b: if caps == True: key.append("B") else: key.append("b") if event.key == pygame.K_c: if caps == True: key.append("C") else: key.append("c") if event.key == pygame.K_d: if caps == True: key.append("D") else: key.append("d") if event.key == pygame.K_e: if caps == True: key.append("E") else: key.append("e") if event.key == pygame.K_f: if caps == True: key.append("F") else: key.append("f") if event.key == pygame.K_g: if caps == True: key.append("G") else: key.append("g") if event.key == pygame.K_h: if caps == True: key.append("H") else: key.append("h") if event.key == pygame.K_i: if caps == True: key.append("I") else: key.append("i") if event.key == pygame.K_j: if caps == True: key.append("J") else: key.append("j") if event.key == pygame.K_k: if caps == True: key.append("K") else: key.append("k") if event.key == pygame.K_l: if caps == True: key.append("L") else: key.append("l") if event.key == pygame.K_m: if caps == True: key.append("M") else: key.append("m") if event.key == pygame.K_n: if caps == True: key.append("N") else: key.append("n") if event.key == pygame.K_o: if caps == True: key.append("O") else: key.append("o") opressed = True if keysheld[K_p]: keycombo = "op" else: keycombo = [] if event.key == pygame.K_p: if caps == True: key.append("P") else: key.append("p") if opressed == True: keycombo = "op" if keysheld[K_o]: keycombo = "op" else: keycombo = [] if event.key == pygame.K_q: if caps == True: key.append("Q") else: key.append("q") if event.key == pygame.K_r: if caps == True: key.append("R") else: key.append("r") if event.key == pygame.K_s: if caps == True: key.append("S") else: key.append("s") if event.key == pygame.K_t: if caps == True: key.append("T") else: key.append("t") if event.key == pygame.K_u: if caps == True: key.append("U") else: key.append("u") if event.key == pygame.K_v: if caps == True: key.append("V") else: key.append("v") if event.key == pygame.K_w: if caps == True: key.append("W") else: key.append("w") if event.key == pygame.K_x: if caps == True: key.append("X") else: key.append("x") if event.key == pygame.K_y: if caps == True: key.append("Y") else: key.append("y") if event.key == pygame.K_z: if caps == True: key.append("Z") else: key.append("z") if event.key == pygame.K_LSHIFT: key.append("LShift") if event.type == pygame.KEYUP: keypressed = False if event.type == pygame.MOUSEBUTTONDOWN: mouseclicked = True print("THIS IS DETECTING!") else: mouseclicked = False if event.type == pygame.MOUSEBUTTONUP: mouseclicked = False if event.type == pygame.VIDEORESIZE: print("Resizing") screenxsize = event.w screenysize = event.h key = ''.join(key) print(mouseclicked) # THIS IS NOT DETECTING THE PRESS DESPITE THE FACT THAT IT SHOULD HAVE BEEN SET TO TRUE< AS DEMONSTRATED BY THE LINE #PRINTING A FEW LINES ABOVE! return running, key, keypressed, keysheld, keycombo, mouseclicked, mouseheld, mpos, screenxsize, screenysize
import pygame from pygame.locals import * import os import Keyhandler import Menues x, y = 0, 0 position = (0, 30) os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y) os.environ['SDL_VIDEO_WINDOW_POS'] = str(position[0]) + "," + str(position[1]) infoObject = pygame.display.Info() screenxsize, screenysize = infoObject.current_w, (infoObject.current_h - 30) running, time, leftmousepress, mouseclicked, mouselefthold, keypressed, screenresizedyet, keycombopressed, helptext, pressed, clickedon, menuenum = True, 0, False, False, False, False, False, False, " ", False, False, "Start" mpos, mouseheld, key = (0,0), False, [] font = pygame.font.SysFont('Comic Sans MS', 10) pygame.init() pygame.font.init() screen = pygame.display.set_mode([(int(screenxsize)), (int(screenysize))], RESIZABLE) pygame.display.set_caption('Dnd reimagined') while running: time = time + 1 running, key, keypressed, keysheld, keycombo, mouseclicked, mouseheld, mpos, screenxsize, screenysize = Keyhandler.keyhandler(screenxsize, screenysize, mouseclicked) menuenum = Menues.drawmenues(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld, menuenum) Menues.drawmenues(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld, menuenum) if len(key) > 0: print(key) if mouseclicked == True: print("True") if mouseheld == True: print("boobs") print("do") pygame.display.update()
import pygame from pygame.locals import * font = pygame.font.SysFont('Comic Sans MS', 10) mpos, mouseheld = False, False menuenum = "Start" pygame.init() def drawbutton(screen, mpos, held, clickedon, posx, posy, buttonwidth, buttonheight, text): if held == True: pygame.draw.rect(screen, (100, 10, 100), (posx, posy, buttonwidth, buttonheight)) pygame.draw.rect(screen, (100, 100, 100), (posx + (buttonwidth * .1), posy + (buttonheight * .1), (buttonwidth * .8), (buttonheight * .8))) else: pygame.draw.rect(screen, (100, 100, 100), (posx, posy, buttonwidth, buttonheight)) pygame.draw.rect(screen, (100, 10, 100), (posx + (buttonwidth * .1), posy + (buttonheight * .1), (buttonwidth * .8), (buttonheight * .8))) buttontext = font.render(text, False, (255, 255, 255)) screen.blit(buttontext, (posx, posy)) def drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text): clickedon = False held = False if ((posx < mpos[0] < (posx + buttonwidth)) & (posy < mpos[1] < (posy + buttonheight))): if mouseheld == True: held = True else: held = False if mouseclicked == True: clickedon = True else: clickedon = False drawbutton(screen, mpos, held, clickedon, posx, posy, buttonwidth, buttonheight, text) if mouseclicked == True: print("True") return clickedon def startmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld): Startscreen = pygame.image.load('Dnd.png') screen.blit(pygame.transform.scale(Startscreen, (screenxsize, screenysize)), (0, 0)) menuenum = "Start" buttonwidth = screenxsize // 20 buttonheight = screenysize // 20 posx = (screenxsize // 2) - buttonwidth posy = (screenysize // 2) - buttonheight text = "Start" drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) clickedon = drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) if clickedon == True: menuenum = "Charactorcreatior" if mouseclicked == True: print("True") buttonwidth = screenxsize // 20 buttonheight = screenysize // 20 posx = (screenxsize) - buttonwidth posy = (screenysize) - buttonheight text = "Help" drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) clickedon = drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) if clickedon == True: menuenum = "help" if mouseclicked == True: print("True") return menuenum def helpmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld): screen.fill((0, 0, 0)) menuenum = "help" buttonwidth = screenxsize // 20 buttonheight = screenysize // 20 posx = (screenxsize // 2) - buttonwidth posy = (screenysize // 2) - buttonheight text = "Back" drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) clickedon = drawanddetect(screen, mpos, mouseclicked, mouseheld, posx, posy, buttonwidth, buttonheight, text) if clickedon == True: menuenum = "Start" if mouseclicked == True: print("True") return menuenum def drawmenues(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld, menuenum): if menuenum == "Start": startmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld) menuenum = startmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld) if menuenum == "help": menuenum = helpmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld) helpmenue(screen, screenxsize, screenysize, mpos, mouseclicked, mouseheld) if mouseclicked == True: print("True") return menuenumok, this is upsetting me. my keyhandler should be detecting mousepresses, and it is, but only if i hold it down for a half second. The annoying thing is that if i tell my program to print a line at the code that detects the press, IT WILL PRINT, yet apparently will only print and will not set the value of mouseclicked to true unless i hold it down. is this a bug? this has to be a bug? how do i fix this? if i run this, it outputs the line "THIS IS DETECTING!", so logically mouseclicked should be set to true, but it is not. This is weires and contrary to the way programs are supposed to work. help would be very appreciated.