Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import pygtk
- import gtk, os, random
- import abou
- import settings
- import gobject
- class Hangman( ):
- def __init__(self):
- self.path = os.path.dirname(os.path.abspath(__file__))
- self.icon_path = os.path.join(self.path, "icons")
- self.wordlist_path = os.path.join(self.path, "wordlists")
- self.image_path = os.path.join(self.path, "images")
- self.program_logo = os.path.join(self.icon_path, "hm-logo.png")
- self.choice = self.get_readline(self.path, "hm-choice")
- self.wordlist0 = self.get_readline(self.wordlist_path, "hm-0507")
- self.wordlist1 = self.get_readline(self.wordlist_path, "hm-0810")
- self.wordlist2 = self.get_readline(self.wordlist_path, "hm-1117")
- self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.win.connect("destroy", gtk.main_quit)
- self.win.set_position(gtk.WIN_POS_CENTER)
- self.win.set_title("Adam Asmaca")
- self.win.set_icon_from_file(self.program_logo)
- self.win.set_resizable(False)
- # self.win.set_size_request(600,400)
- self.toolbar = gtk.Toolbar()
- self.toolbar.set_style(gtk.TOOLBAR_ICONS)
- self.toolbar.set_flags(gtk.CAN_DEFAULT)
- self.add_item("hm-new-game.png","Yeni Oyun" , self.new_game_clicked)
- self.add_item("hm-settings.png" ,"Ayarlar" , self.settings_window)
- self.add_item("hm-about.png","Hakkında",self.about_window)
- self.add_item("hm-quit.png","Çıkış",gtk.main_quit)
- start_pic = os.path.join(self.image_path, "hm-6.png")
- self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(start_pic , 200, 200)
- self.image = gtk.Image()
- self.image.set_from_pixbuf(self.pixbuf)
- self.word = gtk.Label("Başlamak İçin Yeni Oyun\'a Tıkla")
- self.info = gtk.Label("Adam Asmaca 0.2.1")
- self.kalin_unlu = "A", "I", "O", "U"
- self.ince_unlu = "E", "İ", "Ö", "Ü"
- self.button_list = {}
- 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":
- self.button_list[i] = gtk.Button()
- button = self.button_list[i]
- button.set_size_request(25,-1)
- button.set_label(i )
- if i in self.kalin_unlu:
- self.set_style(button,"paleturquoise")
- elif i in self.ince_unlu:
- self.set_style(button,"palegreen")
- else:
- self.set_style(button,"wheat")
- button.set_sensitive(False)
- button.connect("clicked",self.letter_clicked)
- frame1 = gtk.Frame()
- frame1.add(self.image)
- frame2 = gtk.Frame()
- frame2.add(self.info)
- frame3 = gtk.Frame()
- frame3.add(self.word)
- frame4 = gtk.Frame()
- vbox1 = gtk.VBox()
- vbox1.set_border_width(15)
- self.win.add(vbox1)
- vbox2 = gtk.VBox()
- vbox2.pack_start(frame2,False,False,8)
- vbox2.pack_start(frame3,False,False,6)
- vbox2.pack_start(frame4,False,False,8)
- hbox2 = gtk.HBox(True, True)
- for i in "A","B","C","Ç","D","E","F","G","Ğ","H":
- hbox2.pack_start( self.button_list[i],False,False,5 )
- hbox3 = gtk.HBox(True, True)
- for i in "I","İ","J","K","L","M","N","O","Ö","P":
- hbox3.pack_start( self.button_list[i],False,False,5 )
- hbox4 = gtk.HBox(True, True)
- for i in "R","S","Ş","T","U","Ü","V","Y","Z":
- hbox4.pack_start( self.button_list[i] ,False,False,8 )
- vbox3 = gtk.VBox()
- vbox3.pack_start(hbox2,False,False,6)
- vbox3.pack_start(hbox3,False,False,6)
- vbox3.pack_start(hbox4,False,False,6)
- frame4.add(vbox3)
- hbox1 = gtk.HBox(False,False)
- hbox1.pack_start(vbox2,False,False,10 )
- hbox1.pack_start(frame1,False,False,10)
- box = gtk.HBox()
- self.time = gtk.Label("0")
- self.time.set_alignment(0.7,-1)
- self.id = None
- import pango
- attr = pango.AttrList()
- size = pango.AttrScale( 4, 0, 100)
- attr.insert(size)
- self.time.set_attributes(attr)
- self.puan = 0
- box.pack_start(self.toolbar,True,True)
- box.pack_end(self.time,True,True)
- vbox1.pack_start(box,False,False)
- vbox1.pack_start(hbox1,False,False)
- self.sta = gtk.Statusbar()
- vbox1.pack_end(self.sta,False,False)
- self.win.show_all()
- def set_style(self,widget,color):
- ma = widget.get_colormap()
- colour = ma.alloc_color(color)
- widget.modify_bg(gtk.STATE_PRELIGHT, ma.alloc_color("orange") )
- widget.modify_bg(gtk.STATE_NORMAL, colour)
- widget.modify_bg(gtk.STATE_INSENSITIVE,ma.alloc_color("gray") )
- def get_readline(self,path,name):
- filename = os.path.join(path, name)
- file_ = open(filename, "r")
- read = file_.readlines()
- file_.close()
- return read
- def add_item(self,logo,text,kontak):
- logo = os.path.join(self.icon_path,logo)
- pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(logo , 48, 48)
- image = gtk.Image()
- image.set_from_pixbuf(pixbuf)
- item = gtk.ToolButton()
- item.set_icon_widget(image)
- item.set_label(text)
- item.set_tooltip_text( text)
- item.connect("clicked", kontak)
- self.toolbar.insert(item,-1)
- def settings_window(self, widget):
- settings.settings(self)
- def new_game_clicked(self, widget):
- self.info.set_text("")
- if self.id_control() is False:
- return
- for x in self.button_list:
- button = self.button_list[x]
- button.set_sensitive(True)
- self.pic = os.path.join(self.image_path, "hm-0.png")
- self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self.pic , 200, 200)
- self.image.set_from_pixbuf(self.pixbuf)
- if self.choice == "0":
- rndm = random.sample(xrange(0, len(self.wordlist0)), 1)
- self.w = (self.wordlist0[rndm[0]].rstrip()).decode("utf-8")
- elif self.choice == "1":
- rndm = random.sample(xrange(0, len(self.wordlist1)), 1)
- self.w = (self.wordlist1[rndm[0]].rstrip()).decode("utf-8")
- elif self.choice == "2":
- rndm = random.sample(xrange(0, len(self.wordlist2)), 1)
- self.w = (self.wordlist2[rndm[0]].rstrip()).decode("utf-8")
- else:
- rndm = random.sample(xrange(0, len(self.wordlist0)), 1)
- w1 = (self.wordlist0[rndm[0]].rstrip()).decode("utf-8")
- rndm = random.sample(xrange(0, len(self.wordlist1)), 1)
- w2 = (self.wordlist1[rndm[0]].rstrip()).decode("utf-8")
- rndm = random.sample(xrange(0, len(self.wordlist2)), 1)
- w3 = (self.wordlist2[rndm[0]].rstrip()).decode("utf-8")
- w4 =[w1, w2, w3]
- rndm = random.sample(xrange(0, len(w4)), 1)
- self.w = w4[rndm[0]]
- tmp = ""
- for i in range(len(self.w)):
- tmp = tmp + " " + "_"
- self.word.set_markup("<b>{0}</b>".format(tmp) )
- self.letters = list(self.w)
- self.compare = list(self.w)
- self.attempt = 0
- self.id = gobject.timeout_add(1000,self.puanla)
- def id_control(self,denetim=None):
- if not self.id is None:
- gobject.source_remove(self.id)
- try:
- number = int(self.time.get_text() )
- except ValueError:
- self.time.set_text("0")
- return
- if denetim is True:
- puan = 40 - number
- self.puan += puan
- self.time.set_text("Kazanılan Puan: %s" %( puan ) )
- self.sta.push( False, ( "Toplam Puan: %s " %(self.puan) ) )
- elif denetim is False:
- self.time.set_text("Kazanılan Puan: %s" %( 0) )
- else:
- self.time.set_text(":P")
- for x in self.button_list:
- button = self.button_list[x]
- button.set_sensitive(False)
- return False
- def puanla(self):
- try:
- number = int(self.time.get_text() )
- except ValueError:
- return False
- if number == 40:
- self.id_control()
- return False
- self.time.set_text("%s" % ( number + 1 ) )
- return True
- def letter_clicked(self, widget):
- letter = widget.get_label()
- self.info.set_markup("<b>{0}</b>".format(self.info.get_text() + " " + letter) )
- widget.set_sensitive(False)
- exist = 0
- if letter == "?":
- tmp = []
- for i in self.letters:
- if i != 0:
- tmp.append(i)
- qm = random.sample(xrange(0, len(tmp)), 1)
- letter = tmp[qm[0]]
- self.info.set_markup("<b>{0}</b>".format(self.info.get_text() + " " + letter) )
- for x in self.button_list:
- button = self.button_list[x]
- if button.get_label() == letter:
- button.set_sensitive(False)
- for i in range(len(self.letters)):
- if letter == self.letters[i]:
- exist = exist + 1
- if exist > 0:
- rl = 0
- place = 0
- place_list = []
- self.word.set_text("")
- while place < len(self.letters):
- try:
- member = self.letters.index(letter, place)
- except ValueError:
- pass
- place = place + 1
- if not member in place_list:
- place_list.append(member)
- for i in range(len(place_list)):
- del self.letters[place_list[i]]
- self.letters.insert(place_list[i], 0)
- for i in range(len(self.compare)):
- if self.compare[i] != self.letters[i]:
- self.word.set_markup("<b>{0}</b>".format(self.word.get_text() + " " + self.compare[i]) )
- else:
- self.word.set_markup("<b>{0}</b>".format(self.word.get_text() + " _") )
- if self.letters[i] == 0:
- rl = rl + 1
- if rl == len(self.letters):
- self.info.set_markup("<b>Tebrikler Bildiniz!!!</b>")
- self.word.set_markup("<b>{0}</b>".format(self.w) )
- for x in self.button_list:
- button = self.button_list[x]
- button.set_sensitive(False)
- self.id_control(True)
- elif exist == 0 and letter != "?":
- self.attempt = self.attempt + 1
- self.pic = os.path.join(self.image_path, "hm-" + str(self.attempt) + ".png")
- self.pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self.pic , 200, 200)
- self.image.set_from_pixbuf(self.pixbuf)
- if self.attempt == 6:
- self.info.set_markup("<b>Malesef Bilemediniz!!!</b>")
- self.word.set_markup("<b>{0}</b>".format(self.w) )
- for x in self.button_list:
- button = self.button_list[x]
- button.set_sensitive(False)
- self.id_control(False)
- def about_window(self, widget):
- abou.hakkinda()
- def main(self):
- gtk.main()
- HangTheMan = Hangman()
- HangTheMan.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement