Vinnaren i pepparkakshustävlingen!
2016-10-30, 22:18
  #1
Medlem
Hej!

Jag tänkte fatta mig kort, jag har ett skolprojekt på gång där man ska programmera ett "spel" i python. Tanken är att jag ska programmera hänga gubbe men helt ärligt är jag helt lost i denna programmerings kurs. Jag vet inte riktigt var jag ska börja, så därför vänder jag mig hit. Jag vill fråga er om tips eller hur ni lagt upp det? Vilka klasser/metoder som vore lättast att använda... Vill verkligen lära mig programmering men som sagt känner jag mig lite lost.

frågeställningen lyder:
Programmet slumpar ur en hemlig fil med hemliga ord fram ett ord. Man får gissa en bokstav
och om den finns med skrivs alla förekomster ut. Efter tio fel blir man hängd.
Citera
2016-10-30, 22:24
  #2
Medlem
Citat:
Ursprungligen postat av Callesbanan
Hej!

Jag tänkte fatta mig kort, jag har ett skolprojekt på gång där man ska programmera ett "spel" i python. Tanken är att jag ska programmera hänga gubbe men helt ärligt är jag helt lost i denna programmerings kurs. Jag vet inte riktigt var jag ska börja, så därför vänder jag mig hit. Jag vill fråga er om tips eller hur ni lagt upp det? Vilka klasser/metoder som vore lättast att använda... Vill verkligen lära mig programmering men som sagt känner jag mig lite lost.

frågeställningen lyder:
Programmet slumpar ur en hemlig fil med hemliga ord fram ett ord. Man får gissa en bokstav
och om den finns med skrivs alla förekomster ut. Efter tio fel blir man hängd.

Inget grafiskt?

Du har ett ord:
word = "tjena"

Du tar input:
letter = input("Write letter") (kanske är fel men ungefär så)
Du kollar:
if letter in word:
ok en bokstav gissad
else:
hang_count += 1

också en while loop på det.

Där har du en sketch om hur.
Citera
2016-10-31, 08:52
  #3
Medlem
Okej, ja kan ju vara en början, tack. Inget grafiskt än så länge, har ej gått igenom det ännu. Men behöver mest hjälp med själva skelettet så att säga
Citera
2016-10-31, 12:39
  #4
Medlem
Tvillingens avatar
Citat:
Ursprungligen postat av Callesbanan
Okej, ja kan ju vara en början, tack. Inget grafiskt än så länge, har ej gått igenom det ännu. Men behöver mest hjälp med själva skelettet så att säga

Grafiken är lätt att göra. Gör en lista med hur de olika stadierna i spelet kan se ut. Bara att skriva ut graphics[0] för fel 0, graphics[1] för fel 1 osv. Den fullständiga bilden borde se ut så här ungefär.

Kod:
//Fullständig hängning
 
|----
 |   |
 |   
o
 
|  /|\
 |  / \
 |
/-\ 

Då är det bara att göra en lista där du fyller i alla steg, här är bara ett exempel på den sista då jag inte orkar göra alla andra.
Kod:
graphics = [
    
" |----\n |   |\n |   o\n |  /|\\n |  / \\\n |\n/-\\"

Citera
2016-10-31, 13:00
  #5
Medlem
enowens avatar
Här har du ett simpelt exempel på hur du gör det:

Kod:
#!/usr/bin/env python                                                                            
import argparse                                                                                  
import readchar                                                                                  
                                                                                                 
                                                                                                 
def main
():                                                                                      
    
args parse_args()                                                                          
    if 
play(args.word):                                                                          
        print 
"Gratz you won"                                                                    
    
else:                                                                                        
        print 
"You lost mate, word was {}".format(args.word)                                     
                                                                                                 
                                                                                                 
def play(word):                                                                                  
    
max_tries len(word) + 2                                                                    
    num_tries 
max_tries                                                                        
    guessed_chars 
= []                                                                           
    while 
num_tries is not 0:                                                                    
        print 
"You have {} / {} tries left to figure out the word".format(num_triesmax_tries)
        
char readchar.readchar()                                                               
        if 
char not in word:                                                                     
            if 
char in guessed_chars:                                                            
                print 
"You already guessed that char: {}".format(char)                             
            else:                                                                                
                
guessed_chars.append(char)                                                       
                
num_tries -= 1                                                                   
        
else:                                                                                    
            
guessed_chars.append(char)                                                           
            
guessed_word = [if c in guessed_chars else '_' for c in word]                      
            print 
''.join(guessed_word)                                                                   
            if 
'_' not in guessed_word:                                                          
                return 
True                                                                      
    
return False                                                                                 
                                                                                                 
                                                                                                 
def parse_args
():                                                                                
    
parser argparse.ArgumentParser(description='This is the hangman game')                     
    
parser.add_argument('--word'required=Truehelp='The word you are going to guess')         
    return 
parser.parse_args()                                                                   
                                                                                                 
                                                                                                 
if 
__name__ == '__main__':                                                                       
    
main() 

Du kör det med ./namn.py --word hejsan

Du behöver köra pip install readchar också annars för att läsa 1 char från stdin. Finns andra lösningar för crossplatform annars men då blir det mer kod.
__________________
Senast redigerad av enowen 2016-10-31 kl. 13:06.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback