import socket
import random
import Protokoll


class Server(object):

    def __init__(self, host='localhost', port=12345):
        self.__host = host
        self.__port = port
        self.__socket = socket.socket()

    def start(self):
        self.__socket.bind((self.__host, self.__port))
        self.__socket.listen(5)
        self.client, self.address = self.__socket.accept()
        nachricht = Protokoll.decode(self.client.recv(1024))
        print('Server gestartet. Warte auf eingehende Verbindung. ')            
        if nachricht[0] != Protokoll.HALLO:
            self.client.close()
        self.client.sendall(Protokoll.encode(Protokoll.JA))
        print('Verbindung von: ', self.address)
        
        self.zahl = random.randint(2,99)
        self.versuche=0
        print ('Die Zufallszahl ist : ', self.zahl)

        while (nachricht[0]!=Protokoll.ENDE):
            nachricht= Protokoll.decode(self.client.recv(1024))
            print('Spieler hat auf die Zahl ' , nachricht[1] ,'getippt.')
            self.versuche =self.versuche +1
            try:
                if not (1<int(float(nachricht[1]))< 100):
                    antwort= 'Bitte nur ganze Zahlen zwischen 1 und 100!'
                    print(antwort)
                    self.client.sendall(Protokoll.encode(Protokoll.WARTE, antwort))
                if self.zahl< int(float(nachricht[1])):
                    antwort= 'Die Zahl ist kleiner!'
                    print(antwort)
                    self.client.sendall(Protokoll.encode(Protokoll.WARTE, antwort))
                elif self.zahl> int(float(nachricht[1])):
                    antwort = "Die Zahl ist größer!"
                    print(antwort)
                    self.client.sendall(Protokoll.encode(Protokoll.WARTE, antwort))
                else:
                    antwort = 'Richtig! Du hast mit '+ str(self.versuche) +' Versuchen geschaft!'
                    print(antwort)
                    self.client.sendall(Protokoll.encode(Protokoll.ENDE))
                    break
            except ValueError:
                antwort = "Falsche Eingabe! Bitte nur ganze Zahlen zwischen 1 und 100! "
                print(antwort)
                self.client.sendall(Protokoll.encode(Protokoll.WARTE, antwort))
   

if __name__ == '__main__':
  server = Server()
  server.start()

