zoukankan      html  css  js  c++  java
  • Pascal小游戏 井字棋

    一个很经典的井字棋游戏 Pascal源码Chaobs奉上

    注意:1.有的FP版本不支持汉语,将会出现乱码。2.别想赢电脑了,平手不错了。

    井字过三关:

    program TicTacToe;

    uses crt;

    var

       a:Array [1..3] of Array [1..3] of char;

       b:Array [1..3] of Array [1..3] of integer;

       i,n,g,e,p:integer;

       t:text;

       c:char;

       o:integer;

       r:integer;

       s,h:integer;

       ch,cal,ek,ck,hc:integer;

       time:integer;

    label xh,exit1;

    begin

        randomize;

        clrscr;

        writeln('1',chr(179),'2',chr(179),'3');

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln('4',chr(179),'5',chr(179),'6');

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln('7',chr(179),'8',chr(179),'9');

        writeln('press enter');

        readln;

        xh:

        ek:=0;

        repeat

        repeat

        clrscr;

        if ek=1 then writeln('wrong');

        case b[1,1] of

        0:a[1,1]:=' ';

        1:a[1,1]:='o';

        2:a[1,1]:='x';

        end;

        case b[1,2] of

        0:a[1,2]:=' ';

        1:a[1,2]:='o';

        2:a[1,2]:='x';

        end;

        case b[1,3] of

        0:a[1,3]:=' ';

        1:a[1,3]:='o';

        2:a[1,3]:='x';

        end;

        case b[2,1] of

        0:a[2,1]:=' ';

        1:a[2,1]:='o';

        2:a[2,1]:='x';

        end;

        case b[2,2] of

        0:a[2,2]:=' ';

        1:a[2,2]:='o';

        2:a[2,2]:='x';

        end;

        case b[2,3] of

        0:a[2,3]:=' ';

        1:a[2,3]:='o';

        2:a[2,3]:='x';

        end;

        case b[3,1] of

        0:a[3,1]:=' ';

        1:a[3,1]:='o';

        2:a[3,1]:='x';

        end;

        case b[3,2] of

        0:a[3,2]:=' ';

        1:a[3,2]:='o';

        2:a[3,2]:='x';

        end;

        case b[3,3] of

        0:a[3,3]:=' ';

        1:a[3,3]:='o';

        2:a[3,3]:='x';

        end;

        writeln(a[1,1],chr(179),a[1,2],chr(179),a[1,3]);

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln(a[2,1],chr(179),a[2,2],chr(179),a[2,3]);

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln(a[3,1],chr(179),a[3,2],chr(179),a[3,3]);

        write('press location');

        c:=readkey;

        if c='e' then

       

    begin

          ch:=3;

          goto exit1;

         end;

        o:=ord(c);

        p:=o-48;

        case p of

        1,2,3:g:=1;

        4,5,6:g:=2;

        7,8,9:g:=3;

        end;

        e:=o mod 3;

        if e=0 then e:=3;

        writeln;

        ek:=1;

        until ((c='0') or (c='1') or (c='2') or (c='3') or (c='4')

        or (c='5') or (c='6') or (c='7') or (c='8') or (c='9'));

        until (a[g,e]<>'x') and (a[g,e]<>'o');

        time:=time+1;

        if c='1' then b[1,1]:=1;

        if c='2' then b[1,2]:=1;

        if c='3' then b[1,3]:=1;

        if c='4' then b[2,1]:=1;

        if c='5' then b[2,2]:=1;

        if c='6' then b[2,3]:=1;

        if c='7' then b[3,1]:=1;

        if c='8' then b[3,2]:=1;

        if c='9' then b[3,3]:=1;

        clrscr;

        for s:=1 to 3 do begin

         for h:=1 to 3 do begin

          if b[s,h]=1 then write('o');

          if b[s,h]=2 then write('x');

          if (b[s,h]<>1) and (b[s,h]<>2) then write(' ');

          if h<>3 then write(chr(179));

         end;

         writeln;

         if s<>3 then writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        end;

        if ((b[1,2]=1) and (b[2,2]=1) and (b[3,2]=1))

        or ((b[1,1]=1) and (b[1,2]=1) and (b[1,3]=1))

        or ((b[2,1]=1) and (b[2,2]=1) and (b[2,3]=1))

        or ((b[3,1]=1) and (b[3,2]=1) and (b[3,3]=1))

        or ((b[1,1]=1) and (b[2,1]=1) and (b[3,1]=1))

        or ((b[1,3]=1) and (b[2,3]=1) and (b[3,3]=1))

        or ((b[1,1]=1) and (b[2,2]=1) and (b[3,3]=1))

        or ((b[1,3]=1) and (b[2,2]=1) and (b[3,1]=1))

        then begin ch:=1; goto exit1; end;

        cal:=0;

        for s:=1 to 3 do begin

         for h:=1 to 3 do begin

          if (b[s,h]=1) or (b[s,h]=2) then cal:=cal+1;

         end;

        end;

        if cal=9 then goto exit1;

        writeln('press enter');

        readln;

        repeat

        hc:=0;

        ck:=0;

        if (((b[1,2]=2) and (b[1,3]=2))

        or ((b[2,1]=2) and (b[3,1]=2))

        or ((b[2,2]=2) and (b[3,3]=2)))

        and (b[1,1]<>1) then

         begin

          hc:=1;

          ck:=ck+1;

          r:=1;

         end;

        if (((b[1,1]=2) and (b[1,3]=2))

        or ((b[2,2]=2) and (b[3,2]=2)))

        and (b[1,2]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=2;

        end;

        if (((b[1,1]=2) and (b[1,2]=2))

        or ((b[2,3]=2) and (b[3,3]=2))

        or ((b[2,2]=2) and (b[3,1]=2)))

        and (b[1,3]<>1) then

        begin

          hc:=1;

       

    ck:=ck+1;

          r:=3;

        end;

        if (((b[1,1]=2) and (b[3,1]=2))

        or ((b[2,2]=2) and (b[2,3]=2)))

        and (b[2,1]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=4;

        end;

        if (((b[1,1]=2) and (b[3,3]=2))

        or ((b[1,3]=2) and (b[3,1]=2))

        or ((b[1,2]=2) and (b[3,2]=2))

        or ((b[2,1]=2) and (b[2,3]=2)))

        and (b[2,2]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=5;

        end;

        if (((b[2,1]=2) and (b[2,2]=2))

        or ((b[1,3]=2) and (b[3,3]=2)))

        and (b[2,3]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=6;

        end;

        if (((b[1,1]=2) and (b[2,1]=2))

        or ((b[3,2]=2) and (b[3,3]=2))

        or ((b[1,3]=2) and (b[2,2]=2)))

        and (b[3,1]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=7;

        end;

        if (((b[1,2]=2) and (b[2,2]=2))

        or ((b[3,1]=2) and (b[3,3]=2)))

        and (b[3,2]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=8;

        end;

        if (((b[1,1]=2) and (b[2,2]=2))

        or ((b[1,3]=2) and (b[2,3]=2))

        or ((b[1,1]=2) and (b[2,2]=2)))

        and (b[3,3]<>1) then

        begin

          hc:=1;

          ck:=ck+1;

          r:=9;

        end;

        if hc=0 then begin

        if time=1 then begin

          if c='5' then r:=1;

          if c<>'5' then r:=5;

        end

        else

        begin

        if (((b[1,2]=1) and (b[1,3]=1))

        or ((b[2,1]=1) and (b[3,1]=1))

        or ((b[2,2]=1) and (b[3,3]=1)))

        and (b[1,1]<>2) then

         begin

          ck:=ck+1;

          r:=1;

          hc:=3;

         end;

        if (((b[1,1]=1) and (b[1,3]=1))

        or ((b[2,2]=1) and (b[3,2]=1)))

        and (b[1,2]<>2) then

        begin

          ck:=ck+1;

          r:=2;

          hc:=3;

        end;

        if (((b[1,1]=1) and (b[1,2]=1))

        or ((b[2,3]=1) and (b[3,3]=1))

        or ((b[2,2]=1) and (b[3,1]=1)))

        and (b[1,3]<>2) then

        begin

          ck:=ck+1;

    ck:=ck+1;

          r:=3;

          hc:=3;

        end;

        if (((b[1,1]=1) and (b[3,1]=1))

        or ((b[2,2]=1) and (b[2,3]=1)))

        and (b[2,1]<>2) then

        begin

          ck:=ck+1;

          r:=4;

          hc:=3;

        end;

        if (((b[1,1]=1) and (b[3,3]=1))

        or ((b[1,3]=1) and (b[3,1]=1))

        or ((b[1,2]=1) and (b[3,2]=1))

        or ((b[2,1]=1) and (b[2,3]=1)))

        and (b[2,2]<>2) then

        begin

          ck:=ck+1;

          r:=5;

          hc:=3;

        end;

        if (((b[2,1]=1) and (b[2,2]=1))

        or ((b[1,3]=1) and (b[3,3]=1)))

        and (b[2,3]<>2) then

        begin

          ck:=ck+1;

          r:=6;

          hc:=3;

        end;

        if (((b[1,1]=1) and (b[2,1]=1))

        or ((b[3,2]=1) and (b[3,3]=1))

        or ((b[1,3]=1) and (b[2,2]=1)))

        and (b[3,1]<>2) then

        begin

          ck:=ck+1;

          r:=7;

          hc:=3;

        end;

        if (((b[1,2]=1) and (b[2,2]=1))

        or ((b[3,1]=1) and (b[3,3]=1)))

        and (b[3,2]<>2) then

        begin

          ck:=ck+1;

          r:=8;

          hc:=3;

        end;

        if (((b[1,1]=1) and (b[2,2]=1))

        or ((b[1,3]=1) and (b[2,3]=1))

        or ((b[1,1]=1) and (b[2,2]=1)))

        and (b[3,3]<>2) then

        begin

          ck:=ck+1;

          r:=9;

          hc:=3;

        end;

        end;{else}

        end;{if}

        if ek>1 then writeln('you can be the winner');

        if hc=0 then r:=random(9);

        if time=1 then begin

          if c='5' then r:=1;

          if c<>'5' then r:=5;

        end;

        i:=r mod 3;

        case r of

        1,2,3:n:=1;

        4,5,6:n:=2;

        7,8,9:n:=3;

        end;

        if i=0 then i:=3;

        writeln;

        until (b[n,i]<>1) and (b[n,i]<>2) and (r<>0);

        b[n,i]:=2;

        clrscr;

        case b[1,1] of

        0:a[1,1]:=' ';

        1:a[1,1]:='o';

        2:a[1,1]:='x';

        end;

        case b[1,2] of

        0:a[1,2]:=' ';

        1:a[1,2]:='o';

        2:a[1,2]:='x';

        end;

    case b[1,3] of

        0:a[1,3]:=' ';

        1:a[1,3]:='o';

        2:a[1,3]:='x';

        end;

        case b[2,1] of

        0:a[2,1]:=' ';

        1:a[2,1]:='o';

        2:a[2,1]:='x';

        end;

        case b[2,2] of

        0:a[2,2]:=' ';

        1:a[2,2]:='o';

        2:a[2,2]:='x';

        end;

        case b[2,3] of

        0:a[2,3]:=' ';

        1:a[2,3]:='o';

        2:a[2,3]:='x';

        end;

        case b[3,1] of

        0:a[3,1]:=' ';

        1:a[3,1]:='o';

        2:a[3,1]:='x';

        end;

        case b[3,2] of

        0:a[3,2]:=' ';

        1:a[3,2]:='o';

        2:a[3,2]:='x';

        end;

        case b[3,3] of

        0:a[3,3]:=' ';

        1:a[3,3]:='o';

        2:a[3,3]:='x';

        end;

        writeln(a[1,1],chr(179),a[1,2],chr(179),a[1,3]);

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln(a[2,1],chr(179),a[2,2],chr(179),a[2,3]);

        writeln(chr(196),chr(197),chr(196),chr(197),chr(196));

        writeln(a[3,1],chr(179),a[3,2],chr(179),a[3,3]);

        if ((b[1,2]=2) and (b[2,2]=2) and (b[3,2]=2))

        or ((b[1,1]=2) and (b[1,2]=2) and (b[1,3]=2))

        or ((b[2,1]=2) and (b[2,2]=2) and (b[2,3]=2))

        or ((b[3,1]=2) and (b[3,2]=2) and (b[3,3]=2))

        or ((b[1,1]=2) and (b[2,1]=2) and (b[3,1]=2))

        or ((b[1,3]=2) and (b[2,3]=2) and (b[3,3]=2))

        or ((b[1,1]=2) and (b[2,2]=2) and (b[3,3]=2))

        or ((b[1,3]=2) and (b[2,2]=2) and (b[3,1]=2))

        then begin ch:=2; goto exit1; end;

        goto xh;

        exit1:

        if cal=9 then writeln('deuce');

        if ch=2 then writeln('lost');

        if ch=1 then writeln('win');

        if ch=3 then

         begin

          clrscr;

          writeln('exited');

         end;

        writeln('press enter');

        readln;

    end.

     
    不要想你能为世界做什么,想想你该为世界做什么!
  • 相关阅读:
    跨平台的好处
    Java生成PDF的另一种方法
    关于如何写小说的文章
    对概念解释得很好的文章列表
    k8s 添加补全脚本
    ingress与ingress-controller
    k8s 暴露服务的几种方式
    DevOps 的生活很有意思但并不容易---《DevOps 实践》读后总结 ----------转载转载转载转载转载转载转载转载转载
    SpringMVC的注解机制:Java中利用反射查找使用指定注解的类---找到指定包下的指定注解类
    Web应用安全威胁与防治--基于OWASP TOP 10 与ESAPI
  • 原文地址:https://www.cnblogs.com/Chaobs/p/3837492.html
Copyright © 2011-2022 走看看