Skip to content

Instantly share code, notes, and snippets.

@lschuermann
Created October 13, 2019 10:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lschuermann/b108469e37b866fc11bed75fb2d0673e to your computer and use it in GitHub Desktop.
Save lschuermann/b108469e37b866fc11bed75fb2d0673e to your computer and use it in GitHub Desktop.
Connect Four - Christin's first program
# Spielfeld Matrix (gedreht)
Spielfeld = [[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0]]
def zeigeSpielfeld(Spielfeld):
for y in range(0, 7):
for x in range(0, 6):
print(Spielfeld[x][y], end=" ")
print("")
print("-----------")
print("0 1 2 3 4 5")
zeigeSpielfeld(Spielfeld)
def Einwurf(Zahl, Spielfeld, Spieler):
Spalte = Spielfeld[Zahl]
for index, x in enumerate(Spalte):
if (x != 0):
Spalte[index-1] = Spieler
break;
elif(index == len(Spalte)-1):
Spalte[index] = Spieler
def Gewonnensenk(Spielfeld):
Spieler1 = 0
Spieler2 = 0
for y in range(0, 7):
for x in range(0, 6):
if Spielfeld[x][y] == 1:
Spieler1 += 1
Spieler2 = 0
elif Spielfeld[x][y] == 2:
Spieler2 += 1
Spieler1 = 0
else:
Spieler1 = 0
Spieler2 = 0
if Spieler1 == 4:
return 1
elif Spieler2 == 4:
return 2
return 0
def Gewonnenwaa(Spielfeld):
Spieler1 = 0
Spieler2 = 0
for x in range(0, 6):
for y in range(0, 7):
if Spielfeld[x][y] == 1:
Spieler1 += 1
Spieler2 = 0
elif Spielfeld[x][y] == 2:
Spieler2 += 1
Spieler1 = 0
else:
Spieler1 = 0
Spieler2 = 0
if Spieler1 == 4:
return 1
elif Spieler2 == 4:
return 2
return 0
IstDran = 1
while True:
Spielerzahl = int(input("waehle eine Zahl von 0 bis 5: "))
Einwurf(Spielerzahl, Spielfeld, IstDran)
if (IstDran == 1):
IstDran = 2
else:
IstDran = 1
print("Ergebnis")
zeigeSpielfeld(Spielfeld)
gewonnen = Gewonnensenk(Spielfeld)
if gewonnen == 0:
gewonnen = Gewonnenwaa(Spielfeld)
if gewonnen == 1:
print("Spieler 1 hat gewonnen!")
break;
elif gewonnen == 2:
print("Spieler 2 hat gewonnen!")
break;
import socket
class DummySocket:
def __init__(self):
pass
def send(self, msg, end="\r\n"):
print(msg, end=end)
def input(self, prompt):
return input(prompt)
class RealSocket:
def __init__(self, sock):
self.sock = sock
def send(self, msg, end="\r\n"):
nmsg = bytes("{}{}".format(msg, end), "utf-8")
totalsent = 0
while totalsent < len(nmsg):
sent = self.sock.send(nmsg[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
def input(self, prompt):
self.send(prompt, end="")
return self.sock.recv(64).decode("utf-8")
class MultiSocket:
def __init__(self):
self.socks = []
def add(self, sock):
self.socks.append(sock)
def send(self, msg, end="\r\n"):
for sock in self.socks:
sock.send(msg, end=end)
mySocket = DummySocket()
# Spielfeld Matrix (gedreht)
Spielfeld = [[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0]]
def zeigeSpielfeld(socket, Spielfeld):
for y in range(0, 7):
for x in range(0, 6):
socket.send(Spielfeld[x][y], end=" ")
socket.send("")
socket.send("-----------")
socket.send("0 1 2 3 4 5")
zeigeSpielfeld(mySocket, Spielfeld)
def Einwurf(Zahl, Spielfeld, Spieler):
Spalte = Spielfeld[Zahl]
for index, x in enumerate(Spalte):
if (x != 0):
Spalte[index-1] = Spieler
break;
elif(index == len(Spalte)-1):
Spalte[index] = Spieler
def Gewonnensenk(Spielfeld):
Spieler1 = 0
Spieler2 = 0
for y in range(0, 7):
for x in range(0, 6):
if Spielfeld[x][y] == 1:
Spieler1 += 1
Spieler2 = 0
elif Spielfeld[x][y] == 2:
Spieler2 += 1
Spieler1 = 0
else:
Spieler1 = 0
Spieler2 = 0
if Spieler1 == 4:
return 1
elif Spieler2 == 4:
return 2
return 0
def Gewonnenwaa(Spielfeld):
Spieler1 = 0
Spieler2 = 0
for x in range(0, 6):
for y in range(0, 7):
if Spielfeld[x][y] == 1:
Spieler1 += 1
Spieler2 = 0
elif Spielfeld[x][y] == 2:
Spieler2 += 1
Spieler1 = 0
else:
Spieler1 = 0
Spieler2 = 0
if Spieler1 == 4:
return 1
elif Spieler2 == 4:
return 2
return 0
alleSpieler = MultiSocket()
def start():
# create an INET, STREAMing socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# bind the socket to a public host, and a well-known port
serversocket.bind(("0.0.0.0", 30101))
# become a server socket
serversocket.listen(2)
# accept first player
(clientsocket, address) = serversocket.accept()
Spieler1Socket = RealSocket(clientsocket)
Spieler1Socket.send("Hallo Spieler 1")
(clientsocket, address) = serversocket.accept()
Spieler2Socket = RealSocket(clientsocket)
Spieler2Socket.send("Hallo Spieler 2")
alleSpieler.add(Spieler1Socket)
alleSpieler.add(Spieler2Socket)
alleSpieler.send("Jetst kannz losss gehen...")
IstDran = 1
while True:
IstGeradeDran = IstDran
if (IstDran == 1):
IstDran = 2
aktuellerSpieler = Spieler1Socket
else:
IstDran = 1
aktuellerSpieler = Spieler2Socket
Spielerzahl = int(aktuellerSpieler.input("waehle eine Zahl von 0 bis 5: "))
Einwurf(Spielerzahl, Spielfeld, IstGeradeDran)
alleSpieler.send("Ergebnis")
zeigeSpielfeld(alleSpieler, Spielfeld)
gewonnen = Gewonnensenk(Spielfeld)
if gewonnen == 0:
gewonnen = Gewonnenwaa(Spielfeld)
if gewonnen == 1:
alleSpieler.send("Spieler 1 hat gewonnen!")
break;
elif gewonnen == 2:
alleSpieler.send("Spieler 2 hat gewonnen!")
break;
start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment