Jida's profileGet Down To My BusinessPhotosBlogListsMore Tools Help

Blog


    10/1/2007

    oh my god...

    oh my god...college is really not what i thought it should be...
    it's just so fucking hard..
    i am taking this CSSE120 using Python to program..TicTacToe Game
     
    # TicTacToe
    # Jida Xu
    from graphics import *
    from win_in import *
    from time import *
    boardsize = 3
    boardsize = range(boardsize)
    pps = 150
    windowsize = pps * boardsize
    inset = 15
    def Board(size,win):
        for n in range(size-1):
            Line(Point(pps*(n+1),0),Point(pps*(n+1),10000)).draw(win)
        for n in range(size-1):
            Line(Point(0,pps*(n+1)),Point(10000,pps*(n+1))).draw(win)
    def drawX(row, col, win):
        p=Point(row*pps+pps/2.0,col*pps+pps/2.0)
        p1=Point(p.x-pps/4.0, p.y-pps/4.0)
        p2=Point(p.x+pps/4.0, p.y-pps/4.0)
        p3=Point(p.x+pps/4.0, p.y+pps/4.0)
        p4=Point(p.x-pps/4.0, p.y+pps/4.0)
        line1=Line(p1, p3)
        line2=Line(p2, p4)
        line1.draw(win)
        line2.draw(win)
       
    def drawO(row, col, win):
        circle=Circle(Point(row*pps+pps/2.0, col*pps+pps/2.0), pps/4.0)
        circle.draw(win)
    def fillBoard(size,win):
        turns=0
        for a in range(size):
            for b in range(size):
                if turns%2==0:
                    drawX(a,b,win)
                else:
                    drawO(a,b,win)
                turns=turns+1
       
    def set_list(a, b):
        lb=[]
        for i in range(b):
            la=[]
            for j in range(a):
                la.append(-1)
            lb.append(la)
        return lb
    def drawwinline(p1,p2,type,size,win):
        p1=Point(p1.x*pps+pps/2.0,p1.y*pps+pps/2.0)
        p2=Point(p2.x*pps+pps/2.0,p2.y*pps+pps/2.0)
        l1=Line(p1,p2)
        l1.setWidth(3)
        l1.setFill("red")
        l1.draw(win)
        winner_text=Text(Point(size*pps/2,size*pps/2),"")
        winner_text.setSize(30)
        winner_text.setFill("blue")
        if(type==1):
            winner_text.setText("O wins")
        if(type==0):
            winner_text.setText("X wins")
        winner_text.draw(win)      
       
    def checkwin(matrix,size,win):
        p1=Point(0,0)
        p2=Point(0,0)
        returnval=False
        for i in range(size):
            test=matrix[0][i]
            p1=Point(0,i)
            count=0
            for j in range(size):
                if(test==matrix[j][i] and test!=-1):
                    p2=Point(j,i)
                    count=count+1
            if count==size:
                returnval=True
                drawwinline(p1,p2,test,size,win)
        for i in range(size):
            test=matrix[i][0]
            p1=Point(i,0)
            count=0
            for j in range(size):
                if(test==matrix[i][j] and test!=-1):
                    p2=Point(i,j)
                    count=count+1
            if count==size:
                returnval=True
                drawwinline(p1,p2,test,size,win)
        for i in range(0,size,size-1):
            test=matrix[0][i]
            count=0
            p1=Point(0,i)
            if i==0:
                for j in range(size):
                    if(test==matrix[j][j] and test!=-1):
                        p2=Point(j,j)
                        count=count+1
            if i==size-1:
                for j in range(size):
                    if(test==matrix[j][i-j] and test!=-1):
                        p2=Point(j,i-j)
                        count=count+1
            if(count==size):
                returnval=True
                drawwinline(p1,p2,test,size,win)
                break
        return returnval
           
               
    def main():
        SizeOfBoard = win_input("Please enter the size of the board: ")
        win = GraphWin("TicTacToe", SizeOfBoard*pps, SizeOfBoard*pps)
        Board(SizeOfBoard,win)
    #   fillBoard(SizeOfBoard, win)
        turns=0
        matrix=set_list(SizeOfBoard,SizeOfBoard)
        print matrix
        while checkwin(matrix,SizeOfBoard,win)==False:
            p=win.getMouse()
            p=Point(p.x//pps,p.y//pps)
            if(matrix[p.x][p.y]==-1):
                if turns%2==0:
                    drawX(p.x,p.y,win)
                    matrix[p.x][p.y]=0
                else:
                    drawO(p.x,p.y,win)
                    matrix[p.x][p.y]=1
                turns=turns+1
            if(turns==SizeOfBoard*SizeOfBoard and checkwin(matrix,SizeOfBoard,win)==False):
                disp_tie=Text(Point(SizeOfBoard*pps/2,SizeOfBoard*pps/2),"Tie")
                disp_tie.setSize(30)
                disp_tie.setFill("blue")
                disp_tie.draw(win)
                break
        win.getMouse()
       
    main()
    win.close()
     
    這個就是我們所共識的簡單的井字過三關遊戲的運行程序...
    我用了5個小時終于完成了這個現在已經沒什麽人玩了的遊戲..
    接下來的...是掃雷...之後..聽説..還有CS..