• 【Python小游戏】五子棋


    第一次用Python写一个游戏什么的。。。感觉还是挺高级的一门语言

    不过还没有怎么熟悉语言的情况下代码风格好丑的说……里面的else我都是用的if判断的……

    函数名的话应该会很好理解吧……

    最开始的话check函数写的非常的愚蠢。。后来发现只需要从当前点往两边拓展就可以啦Orz

    代码贴上。。。下一步应该是开始图形界面了QWQ

    #encoding:utf-8
    map=[['' for i in range (20)]for j in range (20)]
    def print_map():
        for i in range (20):
            for j in range (20):
                print map[i][j],
            print ''
    def make_map():
        
        for i in range (1,20):
            map[0][i]=''
            map[i][0]=''
            map[19][i]=''
            map[i][19]=''
        map[0][0]=''
        map[0][19]=''
        map[19][0]=''
        map[19][19]=''
        i=j=0
    def check_illegal(x,y):
        if(x>20):
            return 0
        if(x<0):
            return 0
        if(y>20):
            return 0
        if(y<0):
            return 0
        if(map[x][y]==''):
            return 0
        if(map[x][y]==''):
            return 0
        return 1
    def put_chess(x,y,color):#0代表白色,1代表黑色
        if(color==0):
            map[x][y]=''
        if(color==1):
            map[x][y]=''
    def check_win_row(x,y,color):
        cnt=1
        tempy=y+1
        chess=''
        if(color==0):
            chess=''
        while(map[x][tempy]==chess):
            cnt=cnt+1
            tempy=tempy+1
        tempy=y-1
        while(map[x][tempy]==chess):
            cnt=cnt+1
            tempy=tempy-1
        if(cnt>=5):
            return 1
        return 0
    def check_win_line(x,y,color):
        cnt=1
        tempx=x+1
        chess=''
        if(color==0):
            chess=''
        while(map[tempx][y]==chess):
            cnt=cnt+1
            tempx=tempx+1
        tempx=x-1
        while(map[tempx][y]==chess):
            cnt=cnt+1
            tempx=tempx-1
        if(cnt>=5):
            return 1
        return 0
    def check_win_left_diagonal(x,y,color):
        cnt=1
        tempx=x+1
        tempy=y+1
        chess=''
        if(color==0):
            chess=''
        while(map[tempx][tempy]==chess):
            cnt=cnt+1
            tempx=tempx+1
            tempy=tempy+1
        tempx=x-1
        tempy=y-1
        while(map[tempx][tempy]==chess):
            cnt=cnt+1
            tempx=tempx-1
            tempy=tempy-1
        if(cnt>=5):
            return 1
        return 0
    def check_win_right_diagonal(x,y,color):
        cnt=1
        tempx=x+1
        tempy=y-1
        chess=''
        if(color==0):
            chess=''
        while(map[tempx][tempy]==chess):
            cnt=cnt+1
            tempx=tempx+1
            tempy=tempy-1
        tempx=x-1
        tempy=y+1
        while(map[tempx][tempy]==chess):
            cnt=cnt+1
            tempx=tempx-1
            tempy=tempy+1
        if(cnt>=5):
            return 1
        return 0
    def check_win(x,y,color):
        if(check_win_row(x,y,color)==1):
            return 1
        if(check_win_line(x,y,color)==1):
            return 1
        if(check_win_left_diagonal(x,y,color)==1):
            return 1
        if(check_win_right_diagonal(x,y,color)==1):
            return 1
        return 0
    make_map()
    print_map()
    f=0
    while(1):
        f=1-f
        if(f==0):
            print 'White turn.Choose a place to set your chess:'
        if(f==1):
            print 'Black turn.Choose a place to set your chess:'
        print 'Position'
        x=int(raw_input('X :'))
        y=int(raw_input('Y :'))
        print check_illegal(x,y)
        while(check_illegal(x,y)==0):
            print 'Illegal.Press again'
            x=int(raw_input('X :'))
            y=int(raw_input('Y :'))
        put_chess(x,y,f)
        print_map()
        if(check_win(x,y,f)):
            if(f==0):
                print 'White Win!'
            if(f==1):
                print 'Black Win!'
            break
  • 相关阅读:
    CSS(十二)--响应式布局
    CSS(十一)-- 手机像素
    CSS(十)-- 弹性盒子
    CSS常用属性
    CSS(九)-- less(css的预处理语言)
    CSS(八)-- 变形(过渡、动画、平移、旋转、缩放)
    HTML(二)-- 表格、表单
    原生javascript实现模拟拖拽事件
    JavaScript检测数据类型及模仿jQuery中的数据类型检测
    JavaScript数组常用方法总结
  • 原文地址:https://www.cnblogs.com/BeyondW/p/6202612.html
Copyright © 2020-2023  润新知