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.

     
    不要想你能为世界做什么,想想你该为世界做什么!
  • 相关阅读:
    LeetCode 295. Find Median from Data Stream (堆)
    LeetCode 292. Nim Game(博弈论)
    《JavaScript 模式》读书笔记(4)— 函数2
    《JavaScript 模式》读书笔记(4)— 函数1
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数3
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数2
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数1
    《JavaScript 模式》读书笔记(2)— 基本技巧3
    《JavaScript 模式》读书笔记(2)— 基本技巧2
    《JavaScript 模式》读书笔记(2)— 基本技巧1
  • 原文地址:https://www.cnblogs.com/Chaobs/p/3837492.html
Copyright © 2011-2022 走看看