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.

     
    不要想你能为世界做什么,想想你该为世界做什么!
  • 相关阅读:
    【Codechef】Chef and Bike(二维多项式插值)
    USACO 完结的一些感想
    USACO 6.5 Checker Challenge
    USACO 6.5 The Clocks
    USACO 6.5 Betsy's Tour (插头dp)
    USACO 6.5 Closed Fences
    USACO 6.4 Electric Fences
    USACO 6.5 All Latin Squares
    USACO 6.4 The Primes
    USACO 6.4 Wisconsin Squares
  • 原文地址:https://www.cnblogs.com/Chaobs/p/3837492.html
Copyright © 2011-2022 走看看