Konsole 4 gewinnt

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Kamik423
User
Beiträge: 93
Registriert: Donnerstag 28. März 2013, 16:53

Ich wollte konsolen 4 gewinnt programmieren, da ich mir nicht sicher war wie ich die texturen für grafik hätte machen sollen. Nach 5 minuten war ich auch schon fertig... Viel spass damit

hat einen schönen retro look, aber noch keine "win-detection"
falls demand ideen hat wie ich nicht jeden der 59 situationen einzeln programmieren müsste, bitte reinschreiben.


Danke

Code: Alles auswählen

s1=["_","_","_","_","_","_"]
s2=["_","_","_","_","_","_"]
s3=["_","_","_","_","_","_"]
s4=["_","_","_","_","_","_"]
s5=["_","_","_","_","_","_"]
s6=["_","_","_","_","_","_"]
s7=["_","_","_","_","_","_"]

l1=1-1
l2=1-1
l3=1-1
l4=1-1
l5=1-1
l6=1-1
l7=1-1



	
def addset( player, slot ):

	global l1
	global l2
	global l3
	global l4
	global l5
	global l6
	global l7

	if slot=="1":
		s1[l1]=player
		l1+=1
	if slot=="2":
		s2[l2]=player
		l2+=1
	if slot=="3":
		s3[l3]=player
		l3+=1
	if slot=="4":
		s4[l4]=player
		l4+=1
	if slot=="5":
		s5[l5]=player
		l5+=1
	if slot=="6":
		s6[l6]=player
		l6+=1
	if slot=="7":
		s7[l7]=player
		l7+=1
		
def write():
	for i in range(0,6):
		print(s1[5-i]+" "+s2[5-i]+" "+s3[5-i]+" "+s4[5-i]+" "+s5[5-i]+" "+s6[5-i]+" "+s7[5-i])
	print "1 2 3 4 5 6 7"
	


print "STARTING GAME"

while True:
	position = raw_input("PLAYER X WHAT SLOT DO YOU WANT TO PLACE ON_")
	addset("X",position)
	write()
	position = raw_input("PLAYER O WHAT SLOT DO YOU WANT TO PLACE ON_")
	addset("O",position)
	write()
	

	
0x4c65742773206d616b652073757265207468617420686973746f7279206e6576657220666f726765747320746865206e616d6520656e746572707269736521
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

erstmal die ganzen Wiederholungen entfernt und das »global«:

Code: Alles auswählen

import itertools

def addset(game_field, player, slot ):
    column = game_field[int(slot)-1]
    column[column.index('_')]=player
               
def write_field(game_field):
    print '\n'.join(''.join(row) for row in reversed(zip(*game_field)))
       
def main():
    print "STARTING GAME"
    game_field = [['_']*6 for _ in range(7)]
    for player in itertools.cycle('XO'):
        write_field(game_field)
        position = raw_input("PLAYER %s WHAT SLOT DO YOU WANT TO PLACE ON_"%player)
        addset(game_field, player, position)

if __name__=='__main__':
    main()
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Wenn du sowieso schon itertools importierst, kannst du auch gleich izip benutzen ;)

nach einem Semester Haskell kann ich mir die Implementierung von addset allerdings nicht anschauen
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Kamik423

Hier noch eine Variante ohne itertools:

Code: Alles auswählen

SLOTS = 7
ROWS = 6

def add_stone(player, slot): 
    if 0 < slot <= SLOTS:
        row = levels[slot-1]
        if row == ROWS:
            print"\nThe slot is filled!"
            return
        game_field[row][slot-1] = player
        levels[slot-1] = row + 1
    else:
        print"\nSlot {0} does not exist!".format(slot)
        
def display_game():
    print "\n1 2 3 4 5 6 7"
    print '\n'.join(' '.join(row) for row in reversed(game_field))
     
if __name__=='__main__':
    game_field = [['_'] * SLOTS for dummy in xrange(ROWS)]
    levels = [0] * SLOTS
    print"Starting game"

    while True:
        for player in 'XO':
            slot = raw_input("\nPlayer {0} what slot do you want to place on? :".format(player))
            try:
                add_stone(player, int(slot))
                display_game()
            except ValueError:
                print"\nInvalid slot!"
                break
Gruss wuf :wink:
Take it easy Mates!
Antworten