Advertisement
Guest User

adam yiyen ukaka cuka

a guest
Mar 24th, 2012
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.51 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import pygtk
  5. import gtk, os, random
  6. import abou
  7. import settings
  8. import gobject
  9.  
  10. class Hangman( ):
  11.     def __init__(self):
  12.        
  13.         self.path = os.path.dirname(os.path.abspath(__file__))
  14.         self.icon_path = os.path.join(self.path, "icons")
  15.         self.wordlist_path = os.path.join(self.path, "wordlists")
  16.         self.image_path = os.path.join(self.path, "images")
  17.         self.program_logo = os.path.join(self.icon_path, "hm-logo.png")  
  18.  
  19.         self.choice =  self.get_readline(self.path, "hm-choice")
  20.         self.wordlist0 = self.get_readline(self.wordlist_path, "hm-0507")
  21.         self.wordlist1 = self.get_readline(self.wordlist_path, "hm-0810")
  22.         self.wordlist2  = self.get_readline(self.wordlist_path, "hm-1117")
  23.  
  24.        
  25.         self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
  26.         self.win.connect("destroy", gtk.main_quit)
  27.  
  28.         self.win.set_position(gtk.WIN_POS_CENTER)
  29.         self.win.set_title("Adam Asmaca")
  30.         self.win.set_icon_from_file(self.program_logo)
  31.         self.win.set_resizable(False)
  32.    #     self.win.set_size_request(600,400)
  33.        
  34.         self.toolbar = gtk.Toolbar()
  35.         self.toolbar.set_style(gtk.TOOLBAR_ICONS)
  36.         self.toolbar.set_flags(gtk.CAN_DEFAULT)
  37.        
  38.         self.add_item("hm-new-game.png","Yeni Oyun" , self.new_game_clicked)
  39.         self.add_item("hm-settings.png" ,"Ayarlar" , self.settings_window)
  40.         self.add_item("hm-about.png","Hakkında",self.about_window)  
  41.         self.add_item("hm-quit.png","Çıkış",gtk.main_quit)
  42.  
  43.         start_pic = os.path.join(self.image_path, "hm-6.png")
  44.         self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(start_pic , 200, 200)
  45.         self.image = gtk.Image()
  46.         self.image.set_from_pixbuf(self.pixbuf)
  47.        
  48.         self.word = gtk.Label("Başlamak İçin Yeni Oyun\'a Tıkla")
  49.        
  50.         self.info = gtk.Label("Adam Asmaca 0.2.1")
  51.        
  52.         self.kalin_unlu =  "A", "I", "O", "U"
  53.         self.ince_unlu =  "E", "İ", "Ö", "Ü"
  54.         self.button_list = {}
  55.         for i in   "A","B","C","Ç","D","E","F","G","Ğ","H","I","İ","J","K","L","M","N","O","Ö","P","R","S","Ş","T","U","Ü","V","Y","Z":
  56.                 self.button_list[i] = gtk.Button()
  57.                 button = self.button_list[i]
  58.                 button.set_size_request(25,-1)
  59.                 button.set_label(i )
  60.                 if i in self.kalin_unlu:
  61.                         self.set_style(button,"paleturquoise")
  62.                 elif i in self.ince_unlu:
  63.                         self.set_style(button,"palegreen")
  64.                 else:
  65.                         self.set_style(button,"wheat")                                            
  66.                        
  67.                 button.set_sensitive(False)
  68.                 button.connect("clicked",self.letter_clicked)
  69.  
  70.    
  71.         frame1 = gtk.Frame()
  72.         frame1.add(self.image)
  73.        
  74.         frame2 = gtk.Frame()
  75.         frame2.add(self.info)
  76.        
  77.         frame3 = gtk.Frame()
  78.         frame3.add(self.word)
  79.        
  80.         frame4 = gtk.Frame()
  81.        
  82.         vbox1 = gtk.VBox()
  83.         vbox1.set_border_width(15)
  84.         self.win.add(vbox1)
  85.        
  86.         vbox2 = gtk.VBox()
  87.         vbox2.pack_start(frame2,False,False,8)
  88.         vbox2.pack_start(frame3,False,False,6)
  89.         vbox2.pack_start(frame4,False,False,8)
  90.        
  91.         hbox2 = gtk.HBox(True, True)
  92.        
  93.         for i in "A","B","C","Ç","D","E","F","G","Ğ","H":
  94.                 hbox2.pack_start( self.button_list[i],False,False,5 )
  95.  
  96.        
  97.         hbox3 = gtk.HBox(True, True)
  98.         for  i in  "I","İ","J","K","L","M","N","O","Ö","P":
  99.                 hbox3.pack_start( self.button_list[i],False,False,5 )
  100.        
  101.         hbox4 = gtk.HBox(True, True)
  102.         for i in  "R","S","Ş","T","U","Ü","V","Y","Z":
  103.                 hbox4.pack_start( self.button_list[i] ,False,False,8 )  
  104.  
  105.        
  106.         vbox3 = gtk.VBox()
  107.         vbox3.pack_start(hbox2,False,False,6)
  108.         vbox3.pack_start(hbox3,False,False,6)
  109.         vbox3.pack_start(hbox4,False,False,6)
  110.         frame4.add(vbox3)
  111.        
  112.         hbox1 = gtk.HBox(False,False)
  113.         hbox1.pack_start(vbox2,False,False,10 )
  114.         hbox1.pack_start(frame1,False,False,10)
  115.  
  116.         box = gtk.HBox()
  117.         self.time = gtk.Label("0")
  118.         self.time.set_alignment(0.7,-1)          
  119.         self.id = None
  120.        
  121.         import pango
  122.  
  123.         attr = pango.AttrList()
  124.         size = pango.AttrScale( 4,  0,  100)
  125.         attr.insert(size)
  126.         self.time.set_attributes(attr)
  127.         self.puan = 0
  128.        
  129.         box.pack_start(self.toolbar,True,True)
  130.         box.pack_end(self.time,True,True)
  131.        
  132.         vbox1.pack_start(box,False,False)
  133.         vbox1.pack_start(hbox1,False,False)
  134.        
  135.         self.sta = gtk.Statusbar()
  136.         vbox1.pack_end(self.sta,False,False)
  137.        
  138.         self.win.show_all()
  139.        
  140.     def set_style(self,widget,color):
  141.    
  142.         ma = widget.get_colormap()
  143.         colour = ma.alloc_color(color)
  144.         widget.modify_bg(gtk.STATE_PRELIGHT, ma.alloc_color("orange")  )
  145.         widget.modify_bg(gtk.STATE_NORMAL, colour)
  146.         widget.modify_bg(gtk.STATE_INSENSITIVE,ma.alloc_color("gray") )
  147.  
  148.        
  149.     def get_readline(self,path,name):
  150.         filename = os.path.join(path, name)
  151.         file_ = open(filename, "r")
  152.         read = file_.readlines()
  153.         file_.close()
  154.         return read
  155.        
  156.     def add_item(self,logo,text,kontak):      
  157.         logo = os.path.join(self.icon_path,logo)
  158.         pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(logo , 48, 48)        
  159.         image = gtk.Image()
  160.         image.set_from_pixbuf(pixbuf)        
  161.         item = gtk.ToolButton()
  162.         item.set_icon_widget(image)
  163.         item.set_label(text)
  164.         item.set_tooltip_text( text)
  165.         item.connect("clicked", kontak)    
  166.         self.toolbar.insert(item,-1)
  167.        
  168.     def settings_window(self, widget):
  169.         settings.settings(self)
  170.        
  171.     def new_game_clicked(self, widget):
  172.         self.info.set_text("")
  173.         if self.id_control() is False:
  174.                 return
  175.         for x in self.button_list:
  176.                 button = self.button_list[x]
  177.                 button.set_sensitive(True)
  178.        
  179.         self.pic = os.path.join(self.image_path, "hm-0.png")
  180.         self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self.pic , 200, 200)
  181.         self.image.set_from_pixbuf(self.pixbuf)
  182.  
  183.         if self.choice == "0":
  184.             rndm = random.sample(xrange(0, len(self.wordlist0)), 1)
  185.             self.w = (self.wordlist0[rndm[0]].rstrip()).decode("utf-8")
  186.         elif self.choice == "1":
  187.             rndm = random.sample(xrange(0, len(self.wordlist1)), 1)
  188.             self.w = (self.wordlist1[rndm[0]].rstrip()).decode("utf-8")
  189.         elif self.choice == "2":
  190.             rndm = random.sample(xrange(0, len(self.wordlist2)), 1)
  191.             self.w = (self.wordlist2[rndm[0]].rstrip()).decode("utf-8")
  192.         else:
  193.             rndm = random.sample(xrange(0, len(self.wordlist0)), 1)
  194.             w1 = (self.wordlist0[rndm[0]].rstrip()).decode("utf-8")
  195.             rndm = random.sample(xrange(0, len(self.wordlist1)), 1)
  196.             w2 = (self.wordlist1[rndm[0]].rstrip()).decode("utf-8")
  197.             rndm = random.sample(xrange(0, len(self.wordlist2)), 1)
  198.             w3 = (self.wordlist2[rndm[0]].rstrip()).decode("utf-8")
  199.             w4 =[w1, w2, w3]
  200.             rndm = random.sample(xrange(0, len(w4)), 1)
  201.             self.w = w4[rndm[0]]
  202.        
  203.         tmp = ""  
  204.         for i in range(len(self.w)):
  205.             tmp = tmp + " " + "_"
  206.         self.word.set_markup("<b>{0}</b>".format(tmp) )
  207.         self.letters = list(self.w)
  208.         self.compare = list(self.w)      
  209.         self.attempt = 0
  210.         self.id = gobject.timeout_add(1000,self.puanla)
  211.     def id_control(self,denetim=None):
  212.         if  not self.id is None:
  213.                 gobject.source_remove(self.id)
  214.  
  215.                 try:
  216.                         number = int(self.time.get_text() )  
  217.                 except ValueError:
  218.                         self.time.set_text("0")
  219.                         return
  220.                 if denetim is True:
  221.                         puan = 40 - number
  222.                         self.puan += puan
  223.                         self.time.set_text("Kazanılan Puan: %s" %( puan ) )
  224.                         self.sta.push( False,  ( "Toplam Puan: %s " %(self.puan) )   )
  225.                 elif denetim is False:
  226.                         self.time.set_text("Kazanılan Puan: %s" %( 0) )      
  227.                 else:
  228.                         self.time.set_text(":P")                
  229.                         for x in self.button_list:
  230.                                 button = self.button_list[x]
  231.                                 button.set_sensitive(False)        
  232.                         return False                                                                  
  233.     def puanla(self):
  234.         try:
  235.                 number = int(self.time.get_text() )
  236.         except ValueError:
  237.                 return False
  238.         if number == 40:
  239.                 self.id_control()
  240.                 return False
  241.         self.time.set_text("%s" % ( number + 1 )  )
  242.         return True
  243.                                      
  244.        
  245.     def letter_clicked(self, widget):
  246.         letter = widget.get_label()
  247.         self.info.set_markup("<b>{0}</b>".format(self.info.get_text() + " " + letter) )
  248.         widget.set_sensitive(False)        
  249.         exist = 0
  250.        
  251.         if letter == "?":
  252.             tmp = []
  253.             for i in self.letters:
  254.                 if i != 0:
  255.                     tmp.append(i)
  256.                
  257.             qm = random.sample(xrange(0, len(tmp)), 1)
  258.             letter = tmp[qm[0]]
  259.             self.info.set_markup("<b>{0}</b>".format(self.info.get_text() + " " + letter) )
  260.            
  261.             for x in self.button_list:
  262.                 button = self.button_list[x]
  263.                 if button.get_label() == letter:
  264.                         button.set_sensitive(False)
  265.                
  266.         for i in range(len(self.letters)):
  267.             if letter == self.letters[i]:
  268.                 exist = exist + 1
  269.                
  270.         if exist > 0:
  271.             rl = 0
  272.             place = 0
  273.             place_list = []
  274.             self.word.set_text("")
  275.             while place < len(self.letters):
  276.                 try:
  277.                     member = self.letters.index(letter, place)
  278.                 except ValueError:
  279.                     pass
  280.                 place = place + 1
  281.                 if not member in place_list:
  282.                     place_list.append(member)
  283.                    
  284.             for i in range(len(place_list)):
  285.                 del self.letters[place_list[i]]
  286.                 self.letters.insert(place_list[i], 0)      
  287.                  
  288.             for i in range(len(self.compare)):
  289.                 if self.compare[i] != self.letters[i]:
  290.                     self.word.set_markup("<b>{0}</b>".format(self.word.get_text() + " " + self.compare[i]) )
  291.                 else:
  292.  
  293.                     self.word.set_markup("<b>{0}</b>".format(self.word.get_text() + " _") )
  294.                 if self.letters[i] == 0:
  295.                     rl = rl + 1
  296.                     if rl == len(self.letters):
  297.                         self.info.set_markup("<b>Tebrikler Bildiniz!!!</b>")
  298.                         self.word.set_markup("<b>{0}</b>".format(self.w) )
  299.                         for x in self.button_list:
  300.                                 button = self.button_list[x]
  301.                                 button.set_sensitive(False)
  302.                         self.id_control(True)
  303.         elif exist == 0 and letter != "?":
  304.             self.attempt = self.attempt + 1
  305.             self.pic = os.path.join(self.image_path, "hm-" + str(self.attempt) + ".png")
  306.             self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self.pic , 200, 200)
  307.             self.image.set_from_pixbuf(self.pixbuf)
  308.            
  309.             if self.attempt == 6:
  310.                 self.info.set_markup("<b>Malesef Bilemediniz!!!</b>")
  311.                 self.word.set_markup("<b>{0}</b>".format(self.w) )
  312.                 for x in self.button_list:
  313.                         button = self.button_list[x]
  314.                         button.set_sensitive(False)
  315.                 self.id_control(False)
  316.     def about_window(self, widget):
  317.         abou.hakkinda()
  318.     def main(self):
  319.         gtk.main()
  320.  
  321. HangTheMan = Hangman()
  322. HangTheMan.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement