首页 > 代码库 > Hangman游戏源代码 --- python实现

Hangman游戏源代码 --- python实现

#hangman.pyfrom PythonCard import model,dialogimport randomdef find_letters(letter,a_string):    locations = []    start = 0    while a_string.find(letter,start,len(a_string)) != -1:        location = a_string.find(letter,start,len(a_string))        locations.append(location)        start = location + 1    return locationsdef replace_letters(string,locations,letter):    new_string = ‘‘    for i in range(0,len(string)):        if i in locations:            new_string = new_string + letter        else:            new_string = new_string + string[i]    return new_stringclass Hangman(model.Background):    def on_initialize(self,event):        self.currentword = ""        f = open("words.txt",r)        self.lines = f.readlines()        f.close()        self.new_game()    def new_game(self):        self.components.stYourGuesses.text = ""        self.currentword = random.choice(self.lines)        self.currentword = self.currentword.strip()        self.components.stDisplayWord.text = ""        for a in range(len(self.currentword)):            self.components.stDisplayWord.text += "-"        self.components.foot2.visible = False        self.components.foot1.visible = False        self.components.arm1.visible = False        self.components.arm2.visible = False        self.components.body.visible = False        self.components.head.visible = False    def on_btnGuessWord_mouseClick(self,event):        result = dialog.textEntryDialog(self,What is the word,Hangman,the word)        self.components.stYourGuesses.text = self.components.stYourGuesses.text + " " + result.text + " "        if (result.text).strip() == (self.currentword).strip():            dialog.alertDialog(self,You did it!,Hangman)            self.new_game()        else:            self.wrong_guess()    def wrong_guess(self):        dialog.alertDialog(self,"WRONG!!",Hangman)        if self.components.head.visible == True:            if self.components.body.visible == True:                if self.components.arm1.visible == True:                    if self.components.arm2.visible == True:                        if self.components.foot1.visible == True:                            if self.components.foot2.visible == True:                                dialog.alertDialog(self,"You lost! Word was " + self.currentword,Hangman)                                self.new_game()                            else:                                self.components.foot2.visible = True                        else:                            self.components.foot1.visible = True                    else:                        self.components.arm2.visible = True                else:                    self.components.arm1.visible = True            else:                self.components.body.visible = True        else:            self.components.head.visible = True    def on_btnGuessLetter_mouseClick(self,event):        result = dialog.textEntryDialog(self,enter the letter here:,Hangman,‘‘)        guess = result.text        if len(guess) == 1:            self.components.stYourGuesses.text = self.components.stYourGuesses.text + " " + guess + " "            if result.text in self.currentword:                locations = find_letters(guess,self.currentword)                self.components.stDisplayWord.text = replace_letters(self.components.stDisplayWord.text,locations,guess)                if self.components.stDisplayWord.text.find(-) == -1:                    dialog.alertDialog(self,You win!!!!!,Hangman)                    self.new_game()            else:                self.wrong_guess()        else:            dialog.alertDialog(self,Type one letter only,Hangman)def on_cmdNewGame_command(self,event):    self.new_game()app = model.Application(Hangman)app.MainLoop()

 

资源文件

{application:{type:Application,          name:Template,    backgrounds: [    {type:Background,          name:bgTemplate,          title:uHangman,          size:(560, 373),                  menubar: {type:MenuBar,         menus: [             {type:Menu,             name:menuFile,             label:&File,             items: [                  {type:MenuItem,                   name:menuFileNewGame,                   label:&New Game,                   command:cmdNewGame,                  },                  {type:MenuItem,                   name:menuFileExit,                   label:E&xit,                   command:exit,                  },              ]             },         ]     },         components: [{type:StaticText,     name:stYourGuesses,     position:(28, 236),     font:{faceName: uTahoma, family: sansSerif, size: 10},     text:u‘‘,     },{type:StaticText,     name:StaticText1,     position:(26, 200),     font:{faceName: uTahoma, family: sansSerif, size: 10},     text:uYour Guesses:,     },{type:StaticLine,     name:StaticLine2Copy,     position:(86, 11),     size:(4, 34),     layout:vertical,     },{type:StaticLine,     name:StaticLine3,     position:(87, 10),     size:(69, 4),     layout:horizontal,     },{type:StaticLine,     name:StaticLine2,     position:(157, 10),     size:(4, 160),     layout:vertical,     },{type:StaticLine,     name:StaticLine1,     position:(133, 171),     size:(50, 4),     layout:horizontal,     },{type:StaticText,     name:stDisplayWord,     position:(247, 87),     font:{style: bold, faceName: uCourier New, family: sansSerif, size: 14},     text:u----------,     },{type:Button,     name:btnGuessWord,     position:(252, 128),     size:(120, -1),     label:uGuess the word,     },{type:Button,     name:btnGuessLetter,     position:(250, 32),     size:(120, -1),     label:uGuess a letter,     },{type:StaticText,     name:foot2,     position:(88, 115),     enabled:False,     font:{faceName: Tahoma, family: sansSerif, size: 22},     text:u\\,     },{type:StaticText,     name:foot1,     position:(69, 115),     enabled:False,     font:{faceName: Tahoma, family: sansSerif, size: 22},     text:u/,     },{type:StaticLine,     name:body,     position:(85, 65),     size:(4, 55),     font:{style: bold, faceName: Tahoma, family: sansSerif, size: 8},     layout:vertical,     },{type:StaticLine,     name:arm2,     position:(94, 79),     size:(36, 4),     layout:horizontal,     },{type:StaticLine,     name:arm1,     position:(45, 79),     size:(36, 4),     layout:horizontal,     },{type:StaticText,     name:head,     position:(75, 29),     enabled:False,     font:{faceName: Tahoma, family: sansSerif, size: 20},     text:uO,     },] # end components} # end background] # end backgrounds} }