Hey, jeg begyndte at programmere i python igår, og er kommet op med et meget lille spil. Nåmen i selve python shell der fungere det fint, men når jeg gemmer det som "spil.py" og åbner det udefra så popper der en sort dos-box op og lukker ned hurtigere end man kan nå at se noget.
Nogle der har et godt forslag til hvorfor? Jeg har raw_input både i starten og slutningen af mit program, og begge dele, samt alt koden, springer den åbenbart bare over..?
# Koden til selve spillet, spillet forsætter så længe der er over 0 kort/tal i bunken/listen. while len(kort) >= 1: valg = raw_input("Hojere eller lavere? H/L: ") randomiser = random.randint(0, len(kort)-1) naeste_kort = kort.pop(randomiser) print naeste_kort if "h" in valg: if naeste_kort >= tidligere_kort: print "Rigtig" if x == 1: spiller1_point = spiller1_point + point elif x == 2: spiller2_point = spiller2_point + point if x == 3: spiller3_point = spiller3_point + point elif x == 4: spiller4_point = spiller4_point + point
point = point + 1 elif naeste_kort <= tidligere_kort: print "Forkert" if over_2 == 0: point = 1
# Der bliver valgt en ny spiller ved først at tage en spiller ud fra listen, # og derefter proppe den tidligere spiller ind på listen igen så han ikke bliver # valgt til at spille lige efter sig selv. # s bliver midlertidigt den nye spiller og x puttes tilbage i spiller_valg if over_2 == 1: point = 1 i = random.randint(1, antal_spillere-1) s = spiller_valg.pop(i) spiller_valg[1:1] = [x] if s == 1: print "" print "Det er nu " + spiller1 + "s tur" if s == 2: print "" print "Det er nu " + spiller2 + "s tur" if s == 3: print "" print "Det er nu " + spiller3 + "s tur" if s == 4: print "" print "Det er nu " + spiller4 + "s tur"
x = s
if "l" in valg: if naeste_kort >= tidligere_kort: print "Forkert" if over_2 == 0: point = 1
if over_2 == 1: point = 1 i = random.randint(1, antal_spillere-1) s = spiller_valg.pop(i) spiller_valg[1:1] = [x] if s == 1: print "" print "Det er nu " + spiller1 + "s tur" if s == 2: print "" print "Det er nu " + spiller2 + "s tur" if s == 3: print "" print "Det er nu " + spiller3 + "s tur" if s == 4: print "" print "Det er nu " + spiller4 + "s tur"
x = s
elif naeste_kort <= tidligere_kort: print "Rigtig" if x == 1: spiller1_point = spiller1_point + point elif x == 2: spiller2_point = spiller2_point + point if x == 3: spiller3_point = spiller3_point + point elif x == 4: spiller4_point = spiller4_point + point
point = point + 1
tidligere_kort = naeste_kort
# Den samlede score når der ikke er flere kort tilbage. # De mange tomme prints er for at det skal se bedre ud. # Der er sat `` uden om spiller_point da det er et tal og spiller er string # `` omdanner tal til string så det kan arbejde sammen.
Jeg er også lige gået igang med Python. Men det ligner du har programmet til consolvindue. Så der skal self dukke en sort dos-box op. Det vil der altid gøre når man gemmer som .py Hvis du vil programmet et vidue/frame så skal du gemme som .pyw
prøv at indsætte raw_input() til slut i programmet. Det burde standse det fra at lukke.
Uden at have kigget på din kildekode overhovedet, kan jeg oplyse, at hvis der er en syntax error i dit script, så er det den der udskrives til stderror lige før programmet lukkes. Du kan evt. åbne kommandopromten (Kør => "cmd"), navigere til mappen hvor scriptet ligger, og så kalde scriptet ved filens navn.
På den måde undgår du at skulle bruge raw_input, da konsollen ikke lukker når programmet gør det
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.