数学建模社区-数学中国
标题: C语言技术文章 [打印本页]
作者: 韩冰 时间: 2004-10-4 02:34
标题: C语言技术文章
<DIV align=left>
! m+ C P( _: D$ V- _8 Q6 C0 d<
align=left>程序目的:7 G+ o+ `; x* l* `0 k! p. E: p
输入一个任意大小的迷宫,用栈求出一条走出迷宫的路径,并
: ]! x4 _, A# j0 l显示在屏幕上。
: }2 w; _- G/ m( z# o" j程序实现:
: b! o/ h/ U% x! x8 E S& E" b# S! _可以实现载入迷宫和保存迷宫,附带文件中有4个测试迷宫路径的
2 t% |( T- w3 E. z# ^文件test1~4.dd。请将这些文件拷贝到TC当前目录下,或者在载5 s u* R0 U+ U6 r9 @) Q8 u6 j
入时写明完全路径。由于屏幕大小的限制,当用户自己输入迷宫0 Q& N- W+ A9 w* g
时一定要注意:迷宫大小是有限制的,不小于4*3,不大于30*20。0 H/ j7 \% K t
否则会出现错误信息。输入开始时全是墙,用上下左右键移动,
# W3 D, ?2 @ S: Z4 l/ u用Del键删除墙,形成通路,用Enter键添加墙。输入结束时可以
" V: p4 \( x5 P. r+ d7 r将迷宫保存下来,以dd为扩展名。输入完毕时用F9键来得到结果,5 [; c: g# F, F0 R. o; B
找到路径时,屏幕下方会出现Path found,否则出现Path not found。
9 l4 K4 X- U) D \: m: l* g程序经Turbo C 2.0编译调试成功。运行时不用添加任何运行库。* K1 Z; v, E; @( j+ [( o, m
不可以在VC上编译。
9 e4 K. @1 B! D- W1 B下载DOS版和windows版的迷宫游戏全部代码
6 w P5 r3 |9 u( ^! ^: d2 _. w用户名:migong ; C; a$ A% w# `( v# i. I. f5 U4 @
----------------------------------------------------------------------------------% K( \$ _9 H# N6 }4 C- Q
/* P7 O& R* D1 O9 y; d0 x
MazePath Demo BY Turbo C 2.04 }2 z/ ?7 h- B9 z/ A+ [
Copyright(c) RoverUnion. All right reserved.+ q& }* p. i6 S8 e/ _4 q
Filename: Maze.c
0 N$ G7 K& D |4 C' c f( E3 }Author Dongchengyu.- S+ w( ^' W+ ~" j! f1 k0 p: c% K
Ver 1.10; x$ i% S; V" n# m2 A/ e/ N! q$ V# P
*/
0 p& Q* K6 S" j% |1 j) j#include <stdio.h>
& X! S+ F' b( ^5 V4 y8 m#include <stdlib.h>
' K0 A+ W1 |9 X#include <malloc.h>( v; V: f) E7 f! I# u) v
#include <conio.h>
) ]) M! g8 @* y- M% G. t8 I#include <dos.h>
+ z( a3 H' ~' o: P& g1 X% N+ Z1 O#define OK 1, F& _; X; _" H* p, j
#define ERROR 0# Y: Q v$ l6 R1 T/ c. T" u1 w8 Q
#define TRUE 1# |' b6 s2 g% M
#define FALSE 0
4 |5 a" D4 [+ ? A9 S" s#define F9 0x43
2 R) f: N, w5 f1 u#define Esc 0x1b' u/ L% z$ E% ^: m( Q! y$ N$ y
#define Del 0x53
- H+ O% j8 _4 K+ U; P& m#define Home 0x477 I! U$ j- Q7 o: O* A# Z+ _
#define End 0x4f
. F: c0 t$ l% e) {& O# ^3 p#define Space 0x20
7 z# ?" S0 @% W o" ^- h. p& C#define Up 0x48
- [& ?0 ^8 _+ a& I0 M' `" T3 b# f+ ?#define Down 0x50" h( [! ^( p0 p* e2 A$ i& J
#define Left 0x4b
1 B( R, t4 d: h7 O J#define Right 0x4d {9 [9 |6 l7 s
#define Enter 0x0d
( f& Z8 j. [" ]" ^- z; J8 e#define F2 0x3c- f! e8 ], g1 N
#define F3 0x3d, T2 S2 e7 f3 ^+ @- \' l9 u
#define STACK_INIT_SIZE 200
; b# ]6 t2 K- A0 ^. ]* |#define STACKINCREMENT 10
5 @+ m. m% @8 p! f' jtypedef int Boolean;6 a/ j) F, _9 V1 t
typedef int Status;
& v" x' K/ j, R% }typedef struct {1 z# a! ]1 [4 t/ Q" L
int x;
- n+ I+ ^$ V( x; O. v$ ?" I8 Xint y;
7 E" k3 V4 i- ?( n, J3 d+ P} PosType;
7 }: d& e$ r0 I. Gtypedef struct {, U; J3 U, x; S: @+ b2 V
int ord;
- W4 @7 R) C+ R3 zPosType seat;
( N. Y* @8 \0 |. Z* J. Hint di;
! z* B4 w* I9 C0 x3 { ]} SElemType;, a2 T1 Y) s% j) [
typedef struct {
9 z% {6 W- z( }. W* }! Kint td;
- h* J. f) P/ b* q, r( [int foot;
" y; F, n8 z3 s. u- {int mark;; V) e5 C" S+ Y3 \1 F1 g) t, @
} MazeType;1 y+ b0 v4 q7 U: c
typedef struct {3 O- y4 p* M* p- l$ W( D
SElemType *base;
3 [! O& B( y3 n9 X! ?: ]3 k: sSElemType *top;
# v8 ^( N) l e& F. e$ r0 rint stacksize;; j' p5 S! `6 P+ q7 z9 y/ e
} Stack;- x4 z% }6 G, Z6 c
int Maze[20][30];
5 c( H) [: a8 @5 b& A- @6 {7 D8 D' JMazeType maze[20][30];6 Z( m* X+ P6 g( O, n/ M% a
PosType StartPlace;! C7 j. Z( j$ m+ Z, [
PosType EndPlace;3 [5 J3 Z4 I4 p9 ?) H( J3 R
int count;5 V, e$ d- |5 D# G+ v6 x
int m,n;
4 j1 p3 ^! W6 e$ c- WBoolean b_start=FALSE,b_end=FALSE;# e8 `5 h1 w$ y9 q2 c, ~
void CreatMaze(void);# O& i5 }% m) D/ @. z
Status SaveMaze(char *filename);6 U/ K7 g! {4 ]2 U z( P- n( M9 h6 O
Status LoadMaze(char *filename);
2 w& V3 G& m/ n \& R0 D( gvoid Error(char *message);
' u( b: \: H' q3 P7 O5 F8 ~Status InitStack(Stack *s);6 f' C) B& l( k( G# B5 I! Z
Status DestroyStack(Stack *s);. K2 d- o6 C0 ]; R7 n! q7 m% @
Status ClearStack(Stack *s); E# F$ w9 u3 B3 m
Boolean StackEmpty(Stack *s);" C0 s0 Z" o7 [ O2 ?2 {) e
int StackLength(Stack *s);
; Q+ x8 u g5 k1 j. H6 \# eStatus Push(Stack *s,SElemType e);
) J: U* S a# T4 {0 _SElemType Pop(Stack *s,SElemType e);' V6 s- m |4 @5 w0 {, [
Status GetTop(Stack *s,SElemType *e);& r( A3 V5 I5 }1 J
Status StackTraverse(Stack *s,Status (* visit)(SElemType *se));6 z$ X3 \6 J& _0 B( P; y
Boolean Pass(PosType curpos);4 g- P M) x: Q) H) W
void MarkPrint(PosType seat);
" q* E# }* |. s' \% N& ]void FootPrint(PosType curpos);0 h( n% k0 q- e% p/ y8 o3 [# L
PosType NextPos(PosType seat,int di);
; K1 q8 J: b+ w. }! y' f7 MStatus MazePath(PosType start,PosType end);
+ ^& A) _1 _" P5 S" ]3 [- Q1 G" Nvoid CreatMaze(void)5 t J( ?$ a4 h
/* Form the maze. */
* L3 q7 F3 p. ]1 t; F6 [+ V; h{
2 @7 j4 r9 B% H2 w: x& h+ ?; d" C% uvoid Error(char *message);
, ~0 _6 d! S/ I, z/ a& d! Z. \0 x" ^Status SaveMaze(char *filename);
" _3 J5 w! `" @) {% k6 g& V7 FStatus LoadMaze(char *filename);
0 Y. v1 ~3 |2 K1 m# pint i,j;3 h1 a9 k) t* A6 h, l
int x,y;1 L$ K. l2 i' Q! z7 i
char c;
5 f9 ~- M o1 K. j/ Q9 Ochar savename[12],loadname[12];* a1 D) T! r- s7 A p/ E' o
Boolean flag=FALSE,load=FALSE;
6 c `. b$ y" Y/ s# Q+ l: Bclrscr();( i# E% N3 W) ~/ k* m
printf("Menu:\n\n");# X" x; X8 E0 b+ G8 O3 d0 R3 H
printf("1.Load Mazefile
*.dd)\n\n");5 D( Y# M' Y' }8 C2 @
printf("2.Input Maze:\n\n");: K- q0 `. H' Q& \% y( ]' m( F
printf("Input your choice: ");
- G# _1 Y' p, r& F1 i% D; y Odo6 K. p0 K! w; A8 x5 Y
{
; X' y" `% b3 y' N( xc=getch();
' @( c4 I P- \7 S1 `switch(c)
7 f. I, ]( h. ~; w1 i7 |9 F+ W3 [{& m3 b1 p! W* G( F" x; h
case ''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''); break;& q8 p# `; k! I- m* [7 i8 w4 X
case ''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''); break;
7 T% h! l- E% {: d9 U- Acase Esc: sleep(1); exit(1);
* o3 L- M9 ^( ~5 r5 w d0 ?default: break;
q$ J3 L, K2 _}
" D$ t9 T9 K$ m7 g; S; `' |+ m}) }) z. |* B; g3 v) X0 {( {& o
while(c!=''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''&&c!=''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''') ;
& q% m' Q# S3 Z2 j/ v" i& y& g1 Vif(c==''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''')! N% f: c$ n; ]
{4 F* s) B! `5 Z p1 h
printf("\n\nLoadName: ");6 ?- V' g0 z" u1 K, F' C
scanf("%s",loadname);# H4 R; s6 v( M
if(LoadMaze(loadname))
8 R8 L3 W, b, U+ t2 T9 M* h f{; l1 C1 C7 L4 T: ]1 n
sleep(1); load=TRUE;) C( q6 o1 |' T* W' p
}* Q: I6 I1 e, y* Z3 t4 h
else { gotoxy(1,9); printf("Load fail! "); }- l! S0 ~. h! V2 D, @
}# Q1 s1 U/ s$ N2 l$ g2 p
if(!load)
; F6 Z0 l$ q) d4 }7 x6 ?. [{5 [$ [/ s, a- B# k( f! c) S3 Y
printf("\nInput the maze''''''''''''''''''''''''''''''''s size:\n");
# M l8 R1 L8 q: a! ]5 o/ tprintf("\nInput Length :\n");
! t+ D, f: U/ \ V# z# gscanf("%d",&m);' `2 ?* z0 h7 `
printf("\nInput Width :\n");. ?2 J/ C4 ]. @! x9 }) L
scanf("%d",&n);" R" w8 k8 \* K
if(m<4||n<4) Error("Input");
5 F) L0 U7 N6 Y7 n K2 m8 i9 Rif(m>30||n>20) Error("Maze too large");- ^1 A" [8 ]+ T4 o# k4 J- `% a
for(i=0;i<30;i++)& ?# Z! t$ F8 N; i
for(j=0;j<20;j++)
) i. e. K+ T2 W, u$ Z% D% BMaze[j]=2;& q4 P6 y4 r, U$ @& w
StartPlace.x=0;
* s: C' A x! fStartPlace.y=0;3 O* J6 T$ _* f% Q: D
EndPlace.x=0;
4 Q% v. D5 S$ Y8 I. wEndPlace.y=0;
) V2 t8 q& ^# H+ Vclrscr();- O& b: ?4 l: o$ |% ?+ I
printf("\n");3 P$ ^. {+ T+ Z
for(i=1;i<=n;i++)# l- [& U: ^. M9 J1 K
{
* f4 N2 [2 b, `% I5 N- |1 S; Ofor(j=1;j<=m;j++)
3 N) y0 v8 Z+ Y5 Y3 }! f2 H{' H9 A5 s0 `, B* {
printf(" #");6 i$ ?$ I; i# F. [' a, k" D+ y. m) @
Maze[i-1][j-1]=0;- D' f" ~1 }: C# U f
}
$ Y, B" {9 W+ X3 o$ r0 o* R" Cprintf("\n");
/ d0 w6 ]4 i2 B! _; G" U( ^" m}8 H2 ?1 v3 f" v0 _- k/ F
}+ x% u- Y3 ?4 `2 ~5 F, ~
gotoxy(65,5);( N4 D9 R! e/ u, V( G
printf("''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''':Wall");
' C) u/ Y2 o" z0 Jgotoxy(65,7);
3 K) a2 ?7 V! w( h: B9 m6 ]printf("Start:Home");4 I F- {) w2 f! ?- x
gotoxy(65,9);
. g4 }1 f) m: dprintf("End:End");
1 P- R& E# t. s! d/ Qgotoxy(65,11);
# Y1 E8 K) Z# K- Y* y6 _7 _printf("Delete Wall
el");
- h# s( R; b* a, b, H& lgotoxy(65,13);
& a5 s" g1 G" Y2 P( g3 \8 }" `printf("Enter Wall:Enter");
' Q$ p0 B/ G4 d* @$ Hgotoxy(65,15);
, l/ ~- Q6 \% m/ j" |) Uprintf("Save Maze:F2");/ q! h4 F0 n( }/ W9 r* g) O
gotoxy(65,17);7 d/ I7 A+ G$ Q0 K9 o
printf("Complete:F9");
. a( Q2 I P" t) S1 d/ {% Qgotoxy(65,19);
/ I' X1 s1 F& Q; d: _) S& C* w& Qprintf("Exit:Esc");
8 H; R0 _7 }, u( F, e) O6 V# Igotoxy(4,3);
* [' e( o8 ~% [( h2 ax=4;y=3;
6 f5 a( P$ a' @1 T# x9 c* F! ddo$ X5 @. x: @- l$ P* D
{
0 z4 Q3 \% q* F% Qc=getch();
' k; A/ B0 a* c( Pswitch(c)
, x! _& C- q; c{
& Z9 |3 u3 X5 S3 c+ wcase Up: if(y>3) { y--; gotoxy(x,y); }- V( ^* C) ?' U1 @ H" }1 N
break;
( B c6 z+ h4 i0 V/ Fcase Down: if(y<n) { y++; gotoxy(x,y); }0 N1 m7 ^7 K0 n! O
break;
" _ w9 R* D0 r0 x2 h3 e* W+ w3 Hcase Left: if(x>4) { x-=2; gotoxy(x,y); }
5 `$ L+ x w( dbreak;1 a; R0 C! j& A5 h
case Right: if(x<2*m-2) { x+=2; gotoxy(x,y); }
9 g4 c) ~1 u" ebreak;
" h& V8 i2 q, ?$ ^case Del: if(y-2==StartPlace.y&&x/2-1==StartPlace.x) b_start=FALSE;
0 X5 Q- i) k+ ^) h5 @if(y-2==EndPlace.y&&x/2-1==EndPlace.x) b_end=FALSE;
7 h( x2 \. x( x" f4 F5 l& pputch('''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''); Maze[y-2][x/2-1]=1; gotoxy(x,y);
5 z/ N: S9 _) u; d: T8 w$ Y( Wbreak;
8 U* u/ {5 V1 i8 x ccase Enter: if(y-2==StartPlace.y&&x/2-1==StartPlace.x) break;
0 g8 Z& n6 g3 L- c+ y2 [' F! ^if(y-2==EndPlace.y&&x/2-1==EndPlace.x) break;
' {5 U9 j( p) J" nputch(''''''''''''''''''''''''''''''''#''''''''''''''''''''''''''''''''); Maze[y-2][x/2-1]=0; gotoxy(x,y);
6 D8 A; K. C' A4 S! ?break;
+ n1 ^' S2 b2 g& Ccase Home: if(Maze[y-2][x/2-1]&&!b_start)/ r) R' U- ?, q* X: m" o
{
$ q n, q+ K7 V2 ?StartPlace.x=x/2-1;0 _7 y/ c' w8 w+ S I
StartPlace.y=y-2;' T" ~. f, y6 b! ^; n, x& |* S& ^
putch(''''''''''''''''''''''''''''''''S'''''''''''''''''''''''''''''''');1 i# C! {* u t' Z5 t4 o ]
gotoxy(x,y);5 Z3 }$ B0 F. M3 K9 x6 W
b_start=TRUE;' k6 `& p! o1 h8 Z9 [! t
}' y! H, i: q: n; o4 T3 P0 _- r/ x
break;" b* a/ K# D1 n3 f$ L8 A: b
case End: if(Maze[y-2][x/2-1]&&!b_end)
3 j4 X% z( R H/ z# m1 ?{
+ h; S9 t, ]0 UEndPlace.x=x/2-1;
) n1 c* ]) J! X5 Y( @EndPlace.y=y-2; g# r9 S6 T' A7 k& q
putch(''''''''''''''''''''''''''''''''E'''''''''''''''''''''''''''''''');6 M9 O% H3 v: ^ S$ I, g2 l+ b X
gotoxy(x,y);/ t9 d( j- r8 V' E8 b8 Y8 i# F
b_end=TRUE;
7 S8 q7 V8 C; R: `}+ Z7 F! W7 P) m+ Z) y+ a
break;
* m) k( w$ S8 f8 W, Fcase Esc: gotoxy(2,22); printf("exit"); sleep(1); exit(1);: ]) @5 Z5 c- A- x* B( e" t3 V+ a
case F9: if(b_start&&b_end) flag=TRUE; break;
6 B. g% I2 n9 o1 W2 l! Ncase F2: gotoxy(2,22);: G B& K# K% C; [
printf("Savename:");+ v& ^4 a; n. E Q3 P
scanf("%s",savename);
" @+ a% c7 X3 p0 z) H+ Xgotoxy(2,22);
, _4 ~. t% L# t" `: h) E0 Vif(SaveMaze(savename)) printf("Save OK! ");' E8 W8 Y1 I6 ~. D
else printf("Save fail! ");
) }2 D& s+ h+ A* D" }sleep(1);
) [3 R9 s; {8 I9 T3 x9 g0 [$ |gotoxy(2,22);: _! m" s( ~9 N0 o
printf(" ");6 w5 w# b3 [; m4 w
gotoxy(x,y);
/ ?* l- i3 K7 V, |# {break;/ N9 c% k3 C* @* e+ M6 e
default: break;! W! f* R- o9 @$ r9 g. n1 y
}
' A6 h0 y! i0 d: F}" ]6 V, Y5 n9 k! Q1 D I" M
while(!flag);
3 F. ]$ n: q2 l; Z5 n5 hfor(i=0;i<30;i++)+ p2 F- Y1 k% P1 l' y
for(j=0;j<20;j++)8 j3 |% I. c/ p2 s. E1 T: x4 L
{$ T9 F, _; n& e- x* g2 r
maze[j].td=Maze[j];+ w; s* i, O7 `5 Y( T! D
maze[j].mark=0;) {) H3 V: ~0 ^ M* W- z9 m
maze[j].foot=0;3 a) a! k3 T' P" d( D1 L
}4 G7 N0 j( u: @7 a* l" L- G- F
}
0 i4 P# i& K. dStatus LoadMaze(char *file)* J5 w8 t/ K7 A0 e0 v4 a% E
/* The maze has been loaded. */
" J2 E6 n/ E. \- d: X& d; W+ ?{
7 O8 k) s5 c. j" B# k/ V8 ^5 t. UFILE *fp;3 v- U% s# ]8 j; F& o
char *buffer;" d2 B2 p# W( L8 E+ Q
char ch;. d* g8 g: E0 b2 A
int i=0,j,k;
o/ S$ b) }; F% u5 aBoolean len=FALSE,wid=FALSE;
- t0 R: I% Y# J+ Pif((fp=fopen(file,"r"))==NULL)0 f# u/ X( [4 x$ S! f) |) {
return ERROR;
, R9 K$ ~* @. X- a# C: X+ V7 Gbuffer=(char *)malloc(600*sizeof(char));. B$ w# Q4 |4 H2 I+ `' _
ch=fgetc(fp);
( j- }6 |7 {! ^7 P4 t7 T M: Swhile(ch!=EOF)
5 B* ^( X5 o" i/ u1 d{$ h# F' {* l3 P& u' v I6 X
buffer=ch;5 u7 h+ e* ^6 u/ a! p
i++; _4 }6 e; |; I: L
ch=fgetc(fp);7 y& Q; R0 W6 r* Y
}1 w0 q- @* y! ?: w& ?& W* Q0 h
m=30;n=20;
4 Z) m! _7 t: w* n# U7 Gfor(i=0;i<600;i++)' N+ J6 j z3 U& q! n6 q
{; S$ O7 p3 J7 g* y& n. D: z
j=i/30; k=i%30;* m6 R" `3 ^4 _' L" s
if(buffer==''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''&&!len){ m=i; len=TRUE; }0 y; b8 K# O- }' x- E! j+ d* r# L( K
if(k==0&&buffer==''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''&&!wid){ n=j; wid=TRUE; }
+ F6 e( n) a* p/ F4 ?' aswitch(buffer)! C& t2 c5 ~2 H. x6 e
{
, M; w1 Q3 c' M& R* Vcase ''''''''''''''''''''''''''''''''0'''''''''''''''''''''''''''''''': Maze[j][k]=0; break;
6 z% g' n2 e& F2 |case ''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''': Maze[j][k]=1; break;
5 e% `7 [" E1 ^. ycase ''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''': Maze[j][k]=2; break;# v7 a3 i$ l* S* W) k
case ''''''''''''''''''''''''''''''''3'''''''''''''''''''''''''''''''': Maze[j][k]=1;
. l0 G% c' D/ a. W& V _- dStartPlace.x=k;, u5 A4 V' s# Q/ c
StartPlace.y=j;
4 }& u+ z. m5 U, B! |% t! i ?9 `b_start=TRUE;
' I6 P, Z$ E% u1 @1 x. G0 _ C! ubreak;& l5 ~# U. }7 e
case ''''''''''''''''''''''''''''''''4'''''''''''''''''''''''''''''''': Maze[j][k]=1;( W. R1 b5 ^9 x7 Z
EndPlace.x=k;: w" w9 O- S! r1 V* C0 T/ d
EndPlace.y=j;
9 _; z* v7 @3 d/ y" ^b_end=TRUE;
# k7 f. g* p8 x& ]5 n7 zbreak;
" A9 p! ^8 @1 U. Fdefault : break;" u6 H/ A$ O @% K1 R
}
# L+ e: T) {$ F5 X2 N5 ^8 S}
8 y# G' I3 B% Efclose(fp);4 f: }+ Z2 B: ?! _
clrscr();
4 N8 n/ \5 F7 I5 b5 Yfor(i=0;i<30;i++)
4 E/ s& m1 ]7 V3 k0 ffor(j=0;j<20;j++)
/ I( H; C9 R; b{$ q/ ?/ I" @8 ]: V2 S- ^
maze[j].td=Maze[j];
$ O- p! k5 a. K; w wmaze[j].foot=0;8 e0 M7 ^" G+ D% I
maze[j].mark=0;& j' k& l# K, l) f, ?
if(Maze[j]==0)
/ D0 [% N* q. ]! H7 _, m1 z{4 ^9 z# b. K* Y, K" B1 U" N2 j: }' E7 h2 T
gotoxy(2*i+2,j+2);7 n$ `6 \, e8 ` H4 m3 P9 A
putch(''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''');; K' h4 R+ E$ ^0 m
}
# ^9 m1 C" X' @ ~# }}# V; |+ J+ |. B% `
gotoxy(2*StartPlace.x+2,StartPlace.y+2);
, b7 k4 M. ^) X3 W9 h8 Y/ R" sputch(''''''''''''''''''''''''''''''''S'''''''''''''''''''''''''''''''');0 d' L4 V9 _6 Q/ [$ [$ g
gotoxy(2*EndPlace.x+2,EndPlace.y+2);2 ?% ^1 i& V- V6 A' e: E9 _
putch(''''''''''''''''''''''''''''''''E'''''''''''''''''''''''''''''''');
5 u6 K8 J; K( ]1 D% [ r& T, E Yreturn OK;+ _( ?/ F. Y% e
}
1 i, F: ^/ u/ s' IStatus SaveMaze(char *filename)
5 Z9 L0 V. Y! w1 I& }4 `/* The maze has been saved. */
% V# D: i6 @: k/ _5 P2 u{
$ Y; k3 W1 J" i4 |; qFILE *fp;
, `7 L# n7 q+ J! s- Y6 L+ nchar *buffer;4 E' A9 Y* O" S' Y& m9 e/ O3 }
int i,j,k;8 R; w$ C- c' v o, P! b: b$ ]
fp=fopen(filename,"wb");
g$ }9 P5 Q& O% t8 J- ubuffer=(char *)malloc(600*sizeof(char));- R( i$ \' U8 L
for(i=0;i<600;i++)6 ^/ P3 T- s, P. W2 g
{( |# t6 [; R( y3 j: S7 m$ j! R f# E
j=i/30; k=i%30;$ c2 Y- i& M" Y S& I
switch(Maze[j][k])" N; c" A4 [* r& H% h% `
{% w2 F0 P- m! r0 J) _
case 0: buffer=''''''''''''''''''''''''''''''''0''''''''''''''''''''''''''''''''; break;
7 d1 s+ S* d! B3 H# X. acase 1: buffer=''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''; break;
8 y' z' f8 f! }& r" O$ Y9 ~4 }case 2: buffer=''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''; break;
" Y4 F% S T# B) X. V: { h$ ydefault : Error("Write"); break;
+ }2 v( i6 \2 h* k: a, p# ^2 R9 q4 R}
3 P( d: k3 `* Xif(k==StartPlace.x&&j==StartPlace.y) buffer=''''''''''''''''''''''''''''''''3'''''''''''''''''''''''''''''''';
. |3 K6 L& S0 Vif(k==EndPlace.x&&j==EndPlace.y) buffer=''''''''''''''''''''''''''''''''4'''''''''''''''''''''''''''''''';! V! e% Q. Z. G" n* _
}
?+ I `* G4 \# J3 G( q& Ifwrite(buffer,600,1,fp);" F% ] t; q8 U0 d5 |1 `
free(buffer);
( Q. w$ U1 w0 J) ifclose(fp);: H, O7 P! W3 J6 R1 k/ P
return OK;- `' c S% k4 z
}' `1 \* u% V0 B5 w# c& L, c2 Z
void Error(char *message)
$ I+ b8 x) j4 }& O. e{- D2 s/ F. I, D# f8 F4 m8 ]
clrscr();
: G# b6 `" O# F9 Wfprintf(stderr,"Error:%s\n",message);
$ R% G [3 [2 `% c, yexit(1);
2 R5 z) R" W! b8 P% r. f1 ?} /* Error */
$ n$ v" U k1 j8 Y- z* Y, F1 N
7 B% _& j" A, x$ L& NStatus InitStack(Stack *s)
) u% A) w& u+ s( q% S7 L/* The stack s has been created and is initialized to be empty. */
2 h+ B8 b- f E. B+ G{+ t7 ^) l' H) A# ?6 l; _" \
s->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
1 M; N# m% y/ _if(!s->base) Error("Overflow");
: @. a6 m8 ~6 e5 |s->top=s->base;, n) k1 G; G6 J) ~, x& h
s->stacksize=STACK_INIT_SIZE;
7 f/ a+ N5 L! w* R9 F( lreturn OK;5 q* d$ D+ d' f- b/ Z
} /* InitStack */6 i. s7 m* b* f% p+ Q7 P
Status DestroyStack(Stack *s)
; \. Q+ c- B1 l/* The stack s has been destroyed. */
9 W+ n0 K+ g! i, S! a{7 U4 E7 k6 {( m$ B* b9 L" K
s->top=NULL;
9 T7 C$ a) w# {8 Qs->stacksize=0;
7 W9 G7 L" Y3 _6 `$ Afree(s->base);7 I# V, y/ Y$ |* t- l/ }
s->base=NULL;
! A5 C& \. B$ F" \, sreturn OK;
4 T9 A4 M' D6 Q7 m5 P+ V$ s7 ]} /* DestroyStack */3 [ }; ~/ i7 `( C& p4 d: w! E
Status ClearStack(Stack *s). J; z! J: v! p' }
/* The stack has been clear to be maximum. */, _- ^9 y' ^$ Y3 F9 H8 ~
{
# T+ x! k9 X' I1 n1 z5 i8 m& [/ Ns->top=s->base;
{2 y8 q. i7 g: i: ts->stacksize=STACK_INIT_SIZE;
( {# i ?4 X9 g# o+ N! yreturn OK;
& h2 A$ o! l# u z} /* ClearStack */' f' Z2 @3 L% u. g9 s# b$ Y0 G7 t
Boolean StackEmpty(Stack *s)
, R7 i$ g/ H" z4 u/* Check if the stack s is empty. */
2 n! e) d! |" R! w: e! V8 |{
4 ~/ Q5 |. C' m- L# |if(s->top==s->base) return TRUE;% u7 G9 O- Q! h6 @/ @% q0 L
else return FALSE;
" D* c) b; e7 e' V- w} /* StackEmpty */
8 m5 j5 j: @9 zint StackLength(Stack *s)) g+ @3 N; i+ f6 E2 D
/* Gain the length of the stack s. */& r: F# J! j# F
{
& B" J+ Z% \) `7 Y4 y; K* {' @if(s->top>s->base) return (int)(s->top-s->base);3 ?+ M3 q! `9 ?$ B* q
else return 0; r( P# m! A# w* o2 o! N! X
} /* StackLength */9 l" L8 h4 Z$ V" S
Status Push(Stack *s,SElemType e)
( L# w" x4 ^- h3 f% f: i3 u1 |/* The element e has been pushed into the stack s. */% X. y( U1 z% X( a
{' e' q$ O6 m2 n+ @# ~
if(s->top-s->base>=s->stacksize)
" A3 T7 E+ s. o! d9 ?! h{' l' L9 C( I: \' o
s->base=(SElemType *)realloc(s->base,+ I+ U6 J1 v1 N1 j# G( @( O7 G( L6 v
(s->stacksize+STACKINCREMENT)*sizeof(SElemType));
# Y8 a/ s0 H. P' r& |if(!s->base) Error("Overflow");3 V' Q5 a2 Y& B
s->top=s->base+s->stacksize;9 ], M( `, u' p/ O& R
s->stacksize+=STACKINCREMENT;
! b. o4 u! B* @6 P8 i}2 l* u+ Z4 @, K h3 [8 \$ j# Q
*s->top++=e;
% }5 z9 z* c" N: n' x# b- Vreturn OK;: v3 c" V" c4 d4 `1 l4 V
} /* Push */3 p8 C( x9 ?& m
SElemType Pop(Stack *s,SElemType e)- \, X; Q' W6 x j
/* The element e has been removed from the stack s. */2 z( i4 A% m+ A1 a# Z( X: b
{
. w. Y/ z8 E, Sif(s->top==s->base) Error("
op");
( ^$ q. Q& m6 l; L; x' g& Le=*--s->top;
% P5 m. g+ J. G3 p$ h& a9 freturn e;
8 |* n6 `8 x* W& b} /* Pop */' J/ o* n5 H, a3 V& u4 T" A
Status GetTop(Stack *s,SElemType *e)
`' T* c8 V0 O9 @% @& y4 a/* The element e has got to the top of the stack s.*/6 D8 G" s" m( @( @
{
! M- _5 a' K! R! j3 Iif(s->top==s->base) Error("GetTop");: J8 `2 J5 B0 m6 n$ T# \- _" P
*e=*(s->top-1);+ H2 R1 B' I' m: L6 C
return OK;
/ J5 g( `* h- ~2 X6 {, z$ }- o5 _ ]1 i} /* GetTop */
' k2 u+ _% w1 L/ W/* Traverse the stack s using ''''''''''''''''''''''''''''''''visiting'''''''''''''''''''''''''''''''' function. */; e& g/ `% ^; E" Z' {! ^
/* Status StackTraverse(Stack *s,Status (* visit)(SElemType *se))
6 U: F7 \: J/ p4 S1 S X{/ |* o- _8 N6 W7 d
SElemType p;
; ?3 G) W5 O% @" m/ g9 \/ d% Sint result;3 A2 Z6 L, s0 A
if(s->top==s->base) return ERROR;
5 E3 C9 O9 V. F& W+ a/ l8 Y* Hp=s->base;
) D3 O' V; ^4 r: }. E* \* awhile(!(p==s->top))) Y/ R0 C3 e2 U; D/ \
{; e. S: P0 g7 x/ `$ a
result=(*visit)(p);( _8 G) \+ L& r/ J7 a3 U
p++;
2 {3 h" x z4 s' q. h( J9 \}6 y9 s. K* \& o1 @+ G* W2 s* e1 k" z$ h
return OK;; S$ i4 U1 i$ G* a& v# m
} */
5 H I7 e: `2 LBoolean Pass(PosType curpos)& n x' `: R: k* r# K0 Q* {
/* Check if the current position can be passed. */
! j6 H7 Q: L) R! z! }9 S) s/ }{
* l1 }1 p3 \$ p7 ]- dif(maze[curpos.x][curpos.y].td==1&&. D2 l& b% l7 q7 P7 t
maze[curpos.x][curpos.y].foot==0&&maze[curpos.x][curpos.y].mark==0)
. E; o. C& j# O V* e1 f% {' z) Ureturn TRUE;
6 }7 P6 i* E( p* ?/ }7 k. S" Yelse return FALSE;
l5 \& s) t* k$ s! g} /* Pass *// _) |( A% D& S4 O6 m- b
void MarkPrint(PosType seat)8 t* Q/ D! e9 C& _" c {# u
/* Mark the position seat. */
3 {/ q* Y8 F# w: n{1 O* G7 P$ @1 g B2 m i& Z
maze[seat.x][seat.y].mark=-1;
. H& K- V+ }( B' O+ {, Z, W( @/* Marking ''''''''''''''''''''''''''''''''-1'''''''''''''''''''''''''''''''' symbolize the current position cannot be put. */
% p) y! `7 A; z# a} /* MarkPrint */$ C/ j8 F8 b$ d( a8 O% x7 n7 l
void FootPrint(PosType curpos)
, v! F4 x% x m! b/* The foot of the curpos of the maze has been set ''''''''''''''''''''''''''''''''true''''''''''''''''''''''''''''''''. */8 k0 E: M4 L+ T4 ~! x2 C
{
# h; }" {5 T. R, }1 m o- r! [8 umaze[curpos.x][curpos.y].foot=1;& U; [# M& b3 ^2 [& [/ W9 X
} /* FootPrint */
' a6 z0 }4 q& W. g/ L0 z9 wPosType NextPos(PosType seat,int di)
8 X" G% X% K% c" I% V1 x* [" r" v2 X{
" h4 @2 Y1 k8 P) s! vswitch(di)* s* J- B4 C- S' n
{% [: @- X$ L# Z3 k6 a4 Z
case 1: seat.y++; return seat; /* Eastward */
8 t& ~ J f9 L$ X% M- E: Ycase 2: seat.x++; return seat; /* Southward */
8 j! m9 I4 N0 Q- S" Pcase 3: seat.y--; return seat; /* Westward */
/ a& `7 A5 g! T o% T- T4 w7 Qcase 4: seat.x--; return seat; /* Northward */
6 F4 V9 P0 |4 i# xdefault: seat.x=0; seat.y=0; return seat;
0 a) u# l- P. _/ R. u8 j}0 i. R/ C% o! L/ {' t" a
} /* NextPos */
% \3 N& Y+ P. G4 r N: k5 q8 b9 o% \ d2 `+ t3 N2 |+ m( _
/* The key to the program. */+ ]: _! i7 O8 z
/* Pre: The maze array & the startplace & the endplace.
" v% }4 r9 e" S) p2 n! w& sPost: Find the one traverse of the maze and perform the mazepath.+ U1 [* e [' W- k
Uses: The ADT stack class.
' _0 G/ E. D7 [0 }*/
! M1 u/ Y$ K; R" f7 y+ tStatus MazePath(PosType start,PosType end)
: w. c6 B/ c1 L4 u# X' G! n{
3 R* ^# T) k' IPosType curpos;
3 ^6 ~/ J A2 L5 @# [6 Z5 _. qint curstep;/ Q, i+ i# p4 V4 A
SElemType e;
7 X/ M3 r' C+ n' t' P( q( S. gStack *s,stack;; j$ I E2 R; K: v7 O
stack.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));- h7 m( E' g& n2 \& J# d8 i: R" f5 u
if(!stack.base) Error("Overflow");; l# F2 H. k5 h' V1 E0 l/ M9 J
stack.top=stack.base;# E; k' B5 i1 Z: [5 T
stack.stacksize=STACK_INIT_SIZE;
6 Z; W6 n5 M$ ^0 P$ J# Ns=&stack;3 G) S3 M& |! h+ m
curpos=start;
8 l3 U. A9 @# D( Gcurstep=1;: z/ N+ W5 ^! n) f; j
do7 O9 N2 S6 G. o0 R9 P
{
3 Y$ E" w* j) B Z; p4 j" l4 g6 sif(Pass(curpos)), u' Z4 H# D+ P# {! C2 ?
{4 u# I; }1 u7 |# W5 O: d* J
FootPrint(curpos);4 ]' C) u7 l% ?1 a4 ?) ^7 a
e.ord=curstep; e.seat=curpos; e.di=1;7 [# F: ^' G# n+ ?; r( l+ J
gotoxy((curpos.y+1)*2,curpos.x+2);
+ d7 n) w2 f6 c( z: L. l" H, I+ U- ?; v( h% @putch(''''''''''''''''''''''''''''''''@'''''''''''''''''''''''''''''''');4 b& X1 m, b3 f7 Z: n& p, d/ v: o p7 g
delay(8000); /* pospone time. */
8 t- I7 ?7 Z, A/ NPush(s,e);. F" k' r0 K0 L4 v
if(curpos.x==end.x&&curpos.y==end.y) /* Proceed recursively. */
! ~5 E- c F* j1 @3 e{- Q8 T' v( G, b U, m3 |
DestroyStack(s);8 e4 ]6 u: U7 P' v
return TRUE;$ x# M% y0 @5 P7 S/ G# y
}0 \+ [+ y% F/ U% H! R% |4 ~+ X
curpos=NextPos(curpos,1); /* Try next position. */
, w7 n: U2 P! O4 z, B# mcurstep++;1 l7 f* y( G# ~$ I5 O- P- M
}6 H% D9 i6 y, m" E. E7 G6 j- m
else
# J/ ^ |7 Y; U, X Z0 L{
( z" o$ w% s* L _4 {% Wif(!StackEmpty(s))
) H4 e9 B2 E7 L0 u{
8 }0 m0 M1 Q/ J# ze=Pop(s,e); /* Removed e from s. */
- R1 |* n, ^1 l! L" N+ Y+ m( [while(e.di==4&&!StackEmpty(s)) /* Four directions have been checked. d. O5 Q- J( c3 B. `& Z
and s is not empty. */( C2 ~. v; a8 M/ W
{
( t# r$ `/ ^5 r6 kMarkPrint(e.seat);
V2 S3 ]+ o' k' T# o* F4 P. s- ]gotoxy((e.seat.y+1)*2,e.seat.x+2);
* ~) |/ W: a6 q4 g; Uputch(''''''''''''''''''''''''''''''''@'''''''''''''''''''''''''''''''');
I" a0 j& j4 n. k+ x a1 ndelay(8000); /* Pospone time. */3 ]& v$ ^% ^( k! w$ _' `
gotoxy((e.seat.y+1)*2,e.seat.x+2);
# m5 R v4 y6 iputch('''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''');
) m, l( i s8 s: l0 le=Pop(s,e); /* Remove e from s. */
5 \1 {5 _8 U) `4 r- H2 Ucurstep--;
# U; `( R: R* i) S4 W) ^' ^}# q+ `$ U, C, q! e1 ~, A4 @# L
if(e.di<4) /* The current position hasnot been checked. *// }0 C3 J% w5 X' W; p2 q, T
{
H8 y3 P! G7 U7 i3 R! x9 ee.di++;, n, d5 z; c" l2 e
Push(s,e); /* Insert e into s. */
& \* X0 b2 q0 C9 A, Tcurpos=NextPos(e.seat,e.di); /* Try next position. */( n- C8 {$ v% Z7 Z3 v
}
: a* M- M; v2 u+ Q3 V* M. j2 U}
# G* T# g; c: D6 U6 \" a}, V, I* B& g% H* I; X3 j5 D
}# E% V3 l# s b0 m) I
while(!StackEmpty(s));
6 K" z' S5 g s' H5 y7 c5 B6 VDestroyStack(s);- D! i7 `! h% L7 C6 M q( K
return FALSE;
. k8 }7 f5 w7 B" k- h5 a} /* MazePath */
, n7 a1 }* @$ x, ^0 y7 t7 Yvoid main()( Q& o3 V Z8 F$ b
{' V# k# e! h" }* M: A. b
PosType start,end;/ a9 r* o" C3 N( c X' f- o2 S
CreatMaze();. K' m! [ e/ ~4 ^/ M: W; z
start.x=StartPlace.y;
* M' U! a) P1 X' A1 O% Qstart.y=StartPlace.x;" C8 P5 D0 i" q" j+ T8 D8 ]
end.x=EndPlace.y;
( H0 \5 Z! X% L7 gend.y=EndPlace.x;0 D1 u& f; E- N0 v# S0 x
if(MazePath(start,end))
1 W% L/ B9 A3 r; A7 l7 J3 Q{
7 l' p+ i9 P$ r, mgotoxy(2,22);
& v! w9 R& y0 ^& ~3 [1 Sprintf("
ath found\n");
: c0 U+ ~- [4 q( v/ ^}
1 {/ K0 L8 G& }) p( V* W- Kelse! j2 F" x/ W4 C8 v8 Y7 g; l" i
{; ]8 y# R! [* t2 t4 H4 e
gotoxy(2,22);
+ c$ J, s# K2 T2 {* R" E( dprintf("
ath not found\n");
! F! g5 B$ c( X7 e4 X- w! t}
. E4 R7 ?/ L9 o+ [' f5 Ogetch();- j4 z( D4 ^9 d4 x* c: @2 b5 l
clrscr();) D' R2 a2 R/ P, W5 P/ S C' k* M
} </P></DIV>
作者: 韩冰 时间: 2004-10-4 02:36
<
><b><FONT color=#000000>.:.:上海黑暗之龙--麻将原代码:.:.</FONT></b></P><DIV 626px; HEIGHT: 132px" align=left><
align=left>部分图片未上传
7 ~: A8 U# f1 K, ]/*天宇软件
/ V- r k9 C7 S8 ^; I作者:上海黑暗之龙/ O6 U9 m' D3 w3 V9 K+ F3 _
2002/10/30 l& v6 K( I1 T
麻将原代码*/
4 `7 Y2 _* c0 Y- E5 j#include "dos.h"
' ]. O k" b! m+ A0 E#include "stdio.h"! A6 J3 ?. ]& x/ S( a4 w
#include "graphics.h"' D: u; o. Z9 [: V+ |, B" R- K
#include "bios.h"' e5 ~0 W. p6 w7 ? C) k4 {9 A
#include "conio.h"
: ?: K& U8 M, g: T% U6 T#include "stdlib.h"# W5 T. z+ u H/ M. r7 D$ K' v
unsigned char far *video_buffer=(char far *)0xA0000000L;8 a% [* T! J3 ~. i% s$ p! e# z
#define VGA256 0x13 /*图形模式13h*/
& Z, t! {$ e5 n9 Z#define TEXT_MODE 0x03 /*普通文本模式*// R' [2 w* ^) h+ b2 V7 i
#define SETVGA Set_Video_Mode(VGA256)
; E, c- \+ i( ^7 p#define OUTVGA Set_Video_Mode(TEXT_MODE)
* x3 g, ?* I: W Z S% T1 q#define BYTE unsigned char
/ H: `. O* i3 t) F3 |( S#define WORD unsigned int' x0 i# s Q1 Z, @/ G ~& r+ x( q( `, j) X
#define DWORD unsigned int
+ [+ R- ]6 z C- u* C#define ESC 283& g8 Z+ w* e& h3 J- z" h
#define LEFT 19200
7 W5 v8 @/ h/ ]$ @#define RIGHT 19712
- |! E" v2 I7 i" s#define H 9064+ O0 H3 _8 b1 D2 z5 X b# h6 {
#define ENTER 7181
. A1 \2 l% C* K% J5 g1 yunsigned long int z=54400,zz=0,zy=0,zyy=0,z1=0,zl=10140;
, \2 v& ^: x- y2 G6 xint key=0,keyy=0,sing=0,sing1=0,second=0,threes=0;
) b7 I0 F2 o7 f, e2 C& m3 jstruct chi# ?6 A8 s$ i8 o- R1 x$ w
{
+ V N. D1 K! p. `int lg;
5 e1 R. D( x5 i: e$ e7 n& h8 L, |int lgg;
8 }5 c) W$ f2 Q+ l( ?8 x}ch[13];
: h# e* a0 k* V/ o) r! F6 ostruct mj2 E5 U) C9 L1 _; p4 e; C
{ char *name; /*名字*/. {* d0 t( z7 I) {, z6 ? O
int data1; /*是否已出,无用了*/
- @: m, o, P, k D2 A* w1 |int data2; /*是否在手中,1为自己,2为对方*/7 S- U3 f9 j$ _7 Y5 O4 _+ o
int number; /*同一个花色的第几张,共4张*/
( [. r- X% y; p: S+ r: N/ T}m[136]={"1.bmp",0,0,1,"1.bmp",0,0,2,"1.bmp",0,0,3,"1.bmp",0,0,4,"2.bmp",0,0,1,
, H8 Y$ N, Z9 N. U& f7 ?( Y"2.bmp",0,0,2,"2.bmp",0,0,3,"2.bmp",0,0,4,"3.bmp",0,0,1,"3.bmp",0,0,2, z( {3 F+ C; E0 o% s8 _" M% \
"3.bmp",0,0,3,"3.bmp",0,0,4,"4.bmp",0,0,1,"4.bmp",0,0,2,"4.bmp",0,0,3,
$ e2 D. f% T) R* u# m$ o; }8 g"4.bmp",0,0,4,"5.bmp",0,0,1,"5.bmp",0,0,2,"5.bmp",0,0,3,"5.bmp",0,0,4,9 X7 f$ }( y- C& s* U f
"6.bmp",0,0,1,"6.bmp",0,0,2,"6.bmp",0,0,3,"6.bmp",0,0,4,"7.bmp",0,0,1,/ f9 `) A1 W8 ?1 b" [
"7.bmp",0,0,2,"7.bmp",0,0,3,"7.bmp",0,0,4,"8.bmp",0,0,1,"8.bmp",0,0,2,8 l2 v1 X, W1 e' i, Z1 r
"8.bmp",0,0,3,"8.bmp",0,0,4,"9.bmp",0,0,1,"9.bmp",0,0,2,"9.bmp",0,0,3,8 [: y# Z. E, i' X/ k/ U# t& z
"9.bmp",0,0,4,"10.bmp",0,0,1,"10.bmp",0,0,2,"10.bmp",0,0,3,"10.bmp",0,0,4,: z( H7 \' h* }% ~ {' ]; j& ~6 }5 j! ?7 S
"11.bmp",0,0,1,"11.bmp",0,0,2,"11.bmp",0,0,3,"11.bmp",0,0,4,"12.bmp",0,0,1,9 i" I# C+ m4 ?: y
"12.bmp",0,0,2,"12.bmp",0,0,3,"12.bmp",0,0,4,"13.bmp",0,0,1,"13.bmp",0,0,2,
0 T# ]4 I; ^. e' d1 Z8 C% e"13.bmp",0,0,3,"13.bmp",0,0,4,"14.bmp",0,0,1,"14.bmp",0,0,2,"14.bmp",0,0,3,
6 p2 P$ A3 n- h( |- \! j C! R2 j"14.bmp",0,0,4,"15.bmp",0,0,1,"15.bmp",0,0,2,"15.bmp",0,0,3,"15.bmp",0,0,4,
. _2 c/ Q8 |5 ?/ h"16.bmp",0,0,1,"16.bmp",0,0,2,"16.bmp",0,0,3,"16.bmp",0,0,4,"17.bmp",0,0,1, F" S7 ~) k4 f {1 O: e8 d9 W
"17.bmp",0,0,2,"17.bmp",0,0,3,"17.bmp",0,0,4,"18.bmp",0,0,1,"18.bmp",0,0,2,
q/ ]* A! l- u% E9 G! H"18.bmp",0,0,3,"18.bmp",0,0,4,"19.bmp",0,0,1,"19.bmp",0,0,2,"19.bmp",0,0,3," W G! j$ }; j# _0 I
"19.bmp",0,0,4,"20.bmp",0,0,1,"20.bmp",0,0,2,"20.bmp",0,0,3,"20.bmp",0,0,4,2 y1 c7 }& F w8 ~$ U
"21.bmp",0,0,1,"21.bmp",0,0,2,"21.bmp",0,0,3,"21.bmp",0,0,4,"22.bmp",0,0,1,$ P1 \$ E1 I- a
"22.bmp",0,0,2,"22.bmp",0,0,3,"22.bmp",0,0,4,"23.bmp",0,0,1,"23.bmp",0,0,2,
, [& d; ]- ?- M( ]/ b"23.bmp",0,0,3,"23.bmp",0,0,4,"24.bmp",0,0,1,"24.bmp",0,0,2,"24.bmp",0,0,3,7 R" p- x# d! F) e1 t
"24.bmp",0,0,4,"25.bmp",0,0,1,"25.bmp",0,0,2,"25.bmp",0,0,3,"25.bmp",0,0,4,1 a$ a3 K' y: ]& Q. L8 o+ t
"26.bmp",0,0,1,"26.bmp",0,0,2,"26.bmp",0,0,3,"26.bmp",0,0,4,"27.bmp",0,0,1,
, E* x; o% u! T4 r"27.bmp",0,0,2,"27.bmp",0,0,3,"27.bmp",0,0,4,"28.bmp",0,0,1,"28.bmp",0,0,2,2 v" d$ ~% ~4 U* T
"28.bmp",0,0,3,"28.bmp",0,0,4,"29.bmp",0,0,1,"29.bmp",0,0,2,"29.bmp",0,0,3,9 b" K3 n! V, s( Q( ]
"29.bmp",0,0,4,"30.bmp",0,0,1,"30.bmp",0,0,2,"30.bmp",0,0,3,"30.bmp",0,0,4,
5 R: {* {5 {/ u, L1 f& {! L z"31.bmp",0,0,1,"31.bmp",0,0,2,"31.bmp",0,0,3,"31.bmp",0,0,4,"32.bmp",0,0,1,3 B3 _6 l1 M7 p+ x
"32.bmp",0,0,2,"32.bmp",0,0,3,"32.bmp",0,0,4,"33.bmp",0,0,1,"33.bmp",0,0,2,
! V+ _: ~% U, w. {! w"33.bmp",0,0,3,"33.bmp",0,0,4,"34.bmp",0,0,1,"34.bmp",0,0,2,"34.bmp",0,0,3,. F/ C1 r- o3 M) O4 J$ x
"34.bmp"};; X, o4 x6 o% W
struct every0 J! I& R K6 H" a! z
{ int *k; /*名字*/
/ w' K) [+ U: _int oneorfour; /*同一张牌的第几张*/
# `8 T' p; c/ ]; C! y4 Kint number; /*第几张牌136*/ k* g1 u" A9 ~) f
int p;
) |: {* d0 a4 L# Y; sint g;
5 P' @+ J2 R& S9 `$ `int c;' p( |3 x( V! U2 q7 c: @
int d[2];, Z/ h$ |9 Z! D9 R9 q& W
};
% u+ H. B3 S ustruct me' q! m/ X, O- _5 T* A0 r* G
{ int m; /*定义有几张牌,开始有13张随着游戏的进行,会越来越小*// ?3 k% Y+ P0 J: Q$ H% D9 C. j% `
int p; /*乓对方*/
: s# B0 i. _' N4 d" O. \int c; /*吃对方*/" D6 e' L+ P) M, F9 A
int g; /*杠*/
C5 P6 w' x5 j7 [. u, _- E: Q# }7 _- f7 N) Y# F4 N0 c( [
struct every pp[14]; /*存放手上的牌*/
# I3 n( t( F0 Y' p}me;1 t! Z4 d% T" L* u
struct computer
6 a( A2 c" Y4 a9 Y' O2 ~{ int m;
% i2 t; U8 f) H2 T8 ~8 z" nint p;
- y# a' o5 Y3 h# [; Lint c;
' ]1 D- o* V' ~7 ~, ]7 m0 d! s; w# Sint g;) C$ ~- }8 O) c8 f4 S% e' A4 |
struct every pp[14];
' Q; f7 M& ~3 g3 Q/ ^}computer,comp;& ~* T4 m% U' e% W& G
8 @* Z1 N/ {" P7 l' p9 u- ]
/* 设置调色板 */ }8 F# b P% c& u
void Set_Palette(int Color,BYTE r,BYTE g,BYTE b). M# \7 `3 |$ g) D. v5 ]8 |6 {
{+ F- D' b8 a4 F% n$ k( i9 g1 t
outportb(0x3c8,Color); /*0x3c8写端口 写色号*/: t- F% T+ ]$ W% D1 {. |/ n9 J' a5 c
outportb(0x3c9,r); /*0x3c9数据端口 R、G、B的比例*/
0 Q' n4 Z4 g" a* `$ boutportb(0x3c9,g);* n2 P0 m5 d |! D
outportb(0x3c9,b);
% T3 m1 _9 N2 p; V}
" }; V2 k( C" k/ y# z# h/*0x3c7读端口 0x3c6计算机调色板寄存器调用端口*/0 z( z7 |4 w5 }. q5 L% s3 g
/* 设置显示模式的函数 */. M+ N5 V( [! u ^( Q/ P! x
void Set_Video_Mode(int mode)
4 z7 j+ e( J; \, M& w" s# R ?8 Z{! c; U8 ^/ @1 G5 R2 t1 O& p8 R$ w p
union REGS inregs,outregs; /*定义输入和返回寄存器*/
1 |( B2 T5 q3 x+ q+ Linregs.h.ah=0; /*ah存放功能号0h表示进入视频模式*/
; N/ s# [1 Y' h( O5 T4 minregs.h.al=(unsigned char)mode; /*al存放要设定的视频模式*/9 j* O+ p; z6 H4 N0 q$ ?7 G
int86(0x10,&inregs,&outregs); /*通过10h中断设定显示模式int86()包含在dos.h*/
" H: k% `( W$ [$ X, {}
1 {& d/ {9 Y8 ^ l: } Evoid v_line(int y0,int y1,int x,unsigned int color)) D# u, a/ z, g+ H! @* Q
{ unsigned int address,n,temp;
% B% k8 b; f( Q- Z1 I( V4 n eif(y0>y1)
6 w. q7 o7 l7 ]2 ?5 K% l z{: J; e8 d* k. o l$ d
temp=y1;8 |0 i# E& d" i5 ]9 {, A( r. k. ]
y1=y0;
+ e8 G4 v( i7 v2 G3 l; ~$ \y0=temp;
: I, K# F/ {1 e6 N}- F) M* S1 o- @& V4 U$ e. |
address=320*y0+x;/ X9 B( P/ t$ `7 F& M( N9 \
for(n=0;n<=y1-y0;n++)
X: b6 G) s1 R( C{
, X- X c+ [1 N& J* Gvideo_buffer[address]=color;9 m) O/ E6 o0 M" C1 I! |- Y
address+=320;- b! d) z$ z" m: c( _" Z. A
}" \3 I" i+ \" u. V1 W
}
; |: |1 Z" y a7 d, Dvoid h_line(int x0,int x1,int y,unsigned int color)
+ I& O. g/ S$ V! r' I+ l{ unsigned int address,n,temp;" l/ Z d$ d+ \& _
if(x0>x1)( i0 D' t# H6 j; [- `
{
0 V% ^2 S6 P9 Otemp=x1;
5 ~$ e5 l5 Z+ k; K6 }x1=x0;
+ C: o1 T* h5 Tx0=temp;3 i, w7 s* |+ ^' a7 C/ R8 h3 r
}0 Z0 e8 R" @2 s O
address=320*y+x0;
3 s0 b$ B! H' Cfor(n=0;n<=x1-x0;n++)* h1 n5 n/ K: l+ U0 @/ h
{
R; s- a3 K0 [$ z0 @, n% H4 ~video_buffer[address]=color;7 U! n3 F: E6 n% }- N
address+=1;! y0 @8 X6 X Q7 V
}0 h( x5 o1 E) Q- R" p
}1 u% B. T& i5 P( t
void p_pixel(int x,int y,unsigned int color)% ^2 x$ N5 D' X% b1 ~$ }0 ^
{ video_buffer[y*320+x]=color;
6 H: u! U. c# U; h1 B}
' X9 `5 X# Z9 Q. a- }0 t* b1 O- jvoid s_square(int x,int y,int side,int color)
) K/ Q7 H# ~" n7 {{
. H! g4 H, j9 Y) Ih_line(x,x+side,y,color);
4 g3 i, l# D jh_line(x,x+side,y+side,color);" v% C @( B5 v2 l
v_line(y,y+side,x,color);
( j. T* |: K) G. q# S* z# Nv_line(y,y+side,x+side,color);* l! q" d/ A' [+ _- K5 R
}+ [! z7 J( Q S8 j' I* }+ i
void r_rectangle(int x1,int y1,int x2,int y2,int color)
; n! v2 F7 S' h) x% q5 j7 b! \{1 W3 {* Z; L, z
h_line(x1,x2,y1,color);
( _) j0 A$ U2 y5 A- ih_line(x1,x2,y2,color);$ t$ |7 l1 M2 R: i/ p! |( f5 c( F
v_line(y1,y2,x1,color);
1 ?, n7 `- `) p9 S: f; yv_line(y1,y2,x2,color);
: v6 a6 c4 V/ b T U8 K$ `# X3 d}# k: h9 h' J( m7 j0 n( b, v& Y
void fillRectangle(int x1,int y1,int x2,int y2,int color); {, R: l- X9 j1 z3 ?! V
{
/ W( S) y8 l7 D$ S5 Qint i;
2 r' u" V- X$ h C# }5 Afor(i=y1;i<=y2;i++)+ [4 E; l6 e' q5 }6 A9 Z$ C9 A: B3 d
{" E, M% M( M( @7 D
h_line(x1,x2,i,color);% b$ `# z1 ~2 t: _; H( h: B& w
}9 S5 P, Y( J4 v/ l1 a$ m" }
}
: a/ Q @" g/ Lvoid showbmp(int l)
8 }0 M( A2 D/ u) v{ FILE *bmp;) |8 @4 H4 c/ ~, T) ^. l$ x
int i,x,y;
- y. |2 q; y2 U: x3 U1 k, ]BYTE palette[256][3];4 s: k3 V# l A" _2 M7 ]
bmp=fopen(me.pp[l].k,"rb");) i2 t' G& y: C d+ H) |9 b
fseek(bmp,54,SEEK_SET);. h+ G! y3 A0 ~9 X
for(i=0;i<256;i++)
, g' u# W. c/ D1 G, j! c: z{" h( i$ ^8 ^; s1 E
palette[2]=fgetc(bmp)>>2;9 l3 q4 a; H7 N9 Z
palette[1]=fgetc(bmp)>>2;
+ ]( N2 O" |, i y! ypalette[0]=fgetc(bmp)>>2;1 L/ S n4 [3 l' T! s: e
fgetc(bmp);
6 }8 Y0 Y1 ~/ {- W& `, a ^& F; ?: xSet_Palette(i,palette[0],palette[1],palette[2]);
, a7 s4 N! I6 M5 ~}
) w7 m% d9 g) t( d5 g4 Ffor (y=0;y<30;y++)" j1 G7 l) |( N% C
for(x=0;x<20;x++)+ C$ N: C E/ Q% I l
pokeb(0xa000,y*320+x+z+zz+z1,fgetc(bmp));
3 Z+ B/ q5 [; {4 R3 N7 h7 J6 kfclose(bmp);
' p5 a" e i3 a, ]( n}# A& }, g& C! u" w! V" C
void showbmpd(int l)
2 l( l: l& u' U# i{ FILE *bmp;
0 M( c% B% ], i! i E: D0 tint i,x,y;
( _ C$ p8 F* S: I# I4 Q9 C" i% NBYTE palette[256][3];
! d% ~6 }$ o h6 A' Xbmp=fopen(me.pp[l].k,"rb");
# ]9 H: A+ a5 w- ifseek(bmp,54,SEEK_SET);
0 D5 B1 M5 M" \7 kfor(i=0;i<256;i++)/ ?) q' N1 y$ C B" O) I
{* g! e( B; s. z: ?( Z4 R ^
palette[2]=fgetc(bmp)>>2;0 }* Y% @4 Q: r( \
palette[1]=fgetc(bmp)>>2;
# j5 Q' h+ p& D1 w- x& k) `palette[0]=fgetc(bmp)>>2;, _% v: [3 x% j' f) H5 Z
fgetc(bmp);5 D4 n7 V8 M7 k+ `$ S3 }
Set_Palette(i,palette[0],palette[1],palette[2]);
1 Z& l& z" D6 N6 B* K% F: t; n}
' y' |' Y6 F) q6 O8 efor (y=0;y<30;y++)
% b: m8 t. `% z Kfor(x=0;x<20;x++)
4 m) a; N' E7 \- n. Q9 F$ C& ?9 |pokeb(0xa000,y*320+x+zyy,fgetc(bmp));
?, O6 q% J. Vfclose(bmp);; W6 o! A& K1 ?1 v, z# X- Q
}
6 |8 z3 g- C0 d/ g1 f/ _0 Y- Kvoid showybmp(int ll)$ n0 \. x; S# {5 f% ], Y" u
{ FILE *bmp;7 F& J: ?. [+ I
int i,x,y;
: G8 p/ o3 y5 e$ }6 V: YBYTE palette[256][3];
4 g {1 J& N, Rbmp=fopen(computer.pp[ll].k,"rb");
/ h2 E. y7 \1 q. s2 S: }& Bfseek(bmp,54,SEEK_SET);3 S- {. G }: }2 ^. J
for(i=0;i<256;i++)
n1 G' [2 a p' |{
. }: H0 u0 }. ]; g# Bpalette[2]=fgetc(bmp)>>2;( _0 t" k& v$ y3 j s# k
palette[1]=fgetc(bmp)>>2;
3 C5 r. E/ F, j7 t" W& N gpalette[0]=fgetc(bmp)>>2;
5 k. ^! C" m" C7 s% Gfgetc(bmp);/ D1 z, i! l; u
Set_Palette(i,palette[0],palette[1],palette[2]);
5 H! c1 ]9 M1 @1 p8 w}' j. t7 f7 O' r* d5 G2 _
for (y=0;y<30;y++)
( Z$ g% D& _/ _$ \for(x=0;x<20;x++)
; x( B; v/ v% g! Wpokeb(0xa000,y*320+x+zy,fgetc(bmp));
; Q- v+ X2 R6 s% r% f" _$ Cfclose(bmp);: z1 T0 S$ Y# f, t" w7 [
}
7 K4 S$ x0 j8 n. p7 A; C" p, dvoid showcbmp(int ll)9 q; b0 W! H. x3 @* k* ]" e0 F
{ FILE *bmp;
! E" G0 c4 d* G1 j; ]7 z! wint i,x,y;
: i1 D2 N& w7 ^+ c! w7 y- ?. ZBYTE palette[256][3];' C" ], n5 I7 P" {* O5 h! _4 q
bmp=fopen(computer.pp[ll].k,"rb"); C" q7 i% C* s8 Q' T2 {
fseek(bmp,54,SEEK_SET);
1 E& }% D# P# G, p8 O4 Ufor(i=0;i<256;i++)8 u+ B0 ^- A5 \! K; C. w4 @+ z
{
8 O+ r6 G: [2 F0 upalette[2]=fgetc(bmp)>>2;9 |, k0 j2 ^2 j
palette[1]=fgetc(bmp)>>2;
7 r& }$ r! y8 E' f- \palette[0]=fgetc(bmp)>>2;( Z, ?# o: j9 }5 `! I% d
fgetc(bmp);
7 c4 k% P- Y# o" Q8 }3 ^Set_Palette(i,palette[0],palette[1],palette[2]);+ {% X$ a1 D1 R! S- }
}
* ]7 v: Z8 C' Bfor (y=0;y<30;y++)+ B W; Z9 S8 `* ^5 ^* X2 l
for(x=0;x<20;x++), a3 y* \% |, |, \9 ?$ b
pokeb(0xa000,y*320+x+zyy,fgetc(bmp));6 k, I2 Q3 B# X$ ]) ]. f2 l% L
fclose(bmp);" O/ G" l6 B4 F1 G. O; W6 Y; m# _
}+ p, r+ V% B7 k( y0 `! c% M
void bmpp(int number)6 l( n: h7 {: @
{ FILE *bmp;% r% v/ |; W `+ ~
int i,x,y;
^/ ?6 ]% c6 ^BYTE palette[256][3];; D9 m S/ f" X0 F% {8 Q3 E% d6 _% j' r
bmp=fopen(m[number].name,"rb");
! ?3 d# R; P& @fseek(bmp,54,SEEK_SET);/ ]& @5 o$ S6 e$ s3 t; D2 Q8 J
for(i=0;i<256;i++)
6 C$ a4 F! B' K' J/ ^+ a0 k{; q8 k$ E* N8 Q6 L% r& N
palette[2]=fgetc(bmp)>>2;7 F8 E' w3 A$ ~& q6 f! Z4 B1 \6 c
palette[1]=fgetc(bmp)>>2;5 E! }/ ]# x+ U: B' I
palette[0]=fgetc(bmp)>>2;
3 Y2 l% `+ ~; V. {' Kfgetc(bmp);
* Z3 e7 ~! l6 vSet_Palette(i,palette[0],palette[1],palette[2]);
% X& ^8 ?; k2 t$ ^" A0 V5 M& ~7 Z}
! k6 Z1 G: Y- l, l' f: zfor (y=0;y<30;y++)
" J9 {& l. P. A/ D: H2 a6 {for(x=0;x<20;x++)% B5 k* C3 h1 E4 `) J' j X
pokeb(0xa000,y*320+x+zl,fgetc(bmp));4 `( f8 R/ G6 ~+ E- M* B
fclose(bmp);* t& ?1 a- w6 F! d2 b
}: a$ u, q! _8 m
void comlipai() /*整理电脑的牌*/( o+ Y7 E: w: ]' C: F" Q8 v8 P7 {
{ int n,j,u;
5 x' b& L) J5 f) X; m9 r# Mint *lingshi;7 a) U; s( s& n8 s+ O1 x2 Q
for(n=0;n<computer.m;n++)- ]; `& c! ^) ]+ q9 c- f; z
for(j=n;j<computer.m;j++)
. T! b' m' b0 Y/ G- ]{) |0 [% V3 q& q- ?; w
if(computer.pp[n].number>computer.pp[j+1].number)! J( }9 k5 p; H+ x F
{
+ V" n/ C- B2 P% n1 R- Y7 `7 xlingshi=computer.pp[n].k;
. |1 _9 @+ \. D6 [/ R6 ecomputer.pp[n].k=computer.pp[j+1].k;
: i. O7 H# n! d! q0 h5 Ccomputer.pp[j+1].k=lingshi;& s* G, a) y1 H' n' G; ]
u=computer.pp[n].oneorfour;! n' O+ |% K% v. O
computer.pp[n].oneorfour=computer.pp[j+1].oneorfour;
2 |* b* X$ |) N6 X/ y5 Kcomputer.pp[j+1].oneorfour=u;
/ r1 S9 m5 @- h0 lu=computer.pp[n].number;6 R, ?( Y5 h) U& C3 b& K
computer.pp[n].number=computer.pp[j+1].number;5 @/ g8 a ~) T% y; l, D7 q
computer.pp[j+1].number=u;% H; b! y7 K, w! s
}5 c; n( {! @- J- q9 {! T0 j! P( b
else
% g d; d. F/ Y+ }/ L" Mif(computer.pp[n].number==computer.pp[j+1].number)
' `* o; G& @5 B0 n# D" P$ F2 ]if(computer.pp[n].oneorfour>computer.pp[j+1].oneorfour)8 \9 g& r3 ?" }* B) u. l6 X
{, M, {. a0 w- M2 B/ J
lingshi=computer.pp[n].k;5 x/ C4 i2 {. ^- c+ X7 p
computer.pp[n].k=computer.pp[j+1].k;
; L: U' s6 u3 j) x1 Q ycomputer.pp[j+1].k=lingshi;' E5 n) i! |+ f8 Z$ ^* _
u=computer.pp[n].oneorfour;
+ H- ?* l! m( j. G2 A* ~0 Rcomputer.pp[n].oneorfour=computer.pp[j+1].oneorfour;
) l$ R/ @7 U# I% e4 rcomputer.pp[j+1].oneorfour=u;5 h7 ]$ M" F! Y. }
u=computer.pp[n].number; F7 E B' Z9 R* P7 F% n* A
computer.pp[n].number=computer.pp[j+1].number;
1 a7 z. z. C' Z$ Jcomputer.pp[j+1].number=u;+ s8 R' i2 \- ^' b
}, K: c" `. W ^3 T1 y, M
}$ J" R0 V+ t B9 L
}3 [7 l+ f1 Q8 ~# e
void melipai()8 K) y) _) P. V) Z
{ int n,j,u;" m5 ]+ C5 X# X4 A% }0 K" I; H5 x
int *lingshi;1 ~" r1 O; W$ ]5 _) o! L
for(n=0;n<me.m;n++)
: j7 Q6 ^: O( t( Mfor(j=n;j<me.m;j++); C5 P- o+ l0 }* D% W* N5 u4 {. {+ t4 o6 e
{% \& D: Y V G# w
if(me.pp[n].number>me.pp[j+1].number)! o2 M- |1 R- {# f/ o8 }
{
8 l1 e. Z# i) D2 ulingshi=me.pp[n].k;3 z* W. m6 n- z+ H0 [
me.pp[n].k=me.pp[j+1].k;
+ }2 `) d4 a* X( b' p8 c2 lme.pp[j+1].k=lingshi;& R4 S1 X' ?+ I0 I6 ~$ C3 L! B" r
u=me.pp[n].oneorfour;9 }9 {+ e' U& v; ?/ j- V9 j
me.pp[n].oneorfour=me.pp[j+1].oneorfour;' X' g0 l9 l. P% a3 E
me.pp[j+1].oneorfour=u;
& i; N/ Q0 E3 J* ru=me.pp[n].number;/ d* K! N8 X( {/ z/ R) n" T( y
me.pp[n].number=me.pp[j+1].number;' [$ F9 Z7 q( @# f
me.pp[j+1].number=u;
$ L& L6 a% I- D( G7 Q% S: U0 O}
! J3 }4 u" e: b8 Pelse8 {8 ^" {6 T3 \: h
if(me.pp[n].number==me.pp[j+1].number)
; Y3 ?6 T6 d9 d/ j4 b1 K9 Zif(me.pp[n].oneorfour>me.pp[j+1].oneorfour)
( M8 |# ?) e; p5 z$ S s- d1 M( }{* U+ u7 ^2 z$ m: V- k1 R
lingshi=me.pp[n].k;
& y) l9 J% W- G/ Vme.pp[n].k=me.pp[j+1].k;
d3 ~, e u ~. y' g. X& hme.pp[j+1].k=lingshi;
# z3 p4 D( S, j4 I9 f ]/ fu=me.pp[n].oneorfour;
2 r+ j4 W& r& [" {, cme.pp[n].oneorfour=me.pp[j+1].oneorfour;
' h; D8 N& z) @; @me.pp[j+1].oneorfour=u;# R* j1 V9 @2 @/ B: j0 d
u=me.pp[n].number;
7 C2 j0 P4 H4 t4 D/ G* yme.pp[n].number=me.pp[j+1].number;' K6 J/ m. t6 S0 d! g6 X
me.pp[j+1].number=u;
% \: t, @- W. F/ E! [- q}
0 s5 }3 ?% i' ?, V+ S+ p}
6 P# i# ]7 R8 V( @8 ]7 M* ?}" [6 W7 n6 c3 P! N. m5 w
void rgzn(int c) /*本程序涵数的核心针对电脑的牌*/
+ b* _3 @# e H{ int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0;5 B" Q9 l+ x, }. K* G. j w/ k
if(me.pp[c].number<=35 && me.pp[c].number>=0)
4 j$ X6 a" m5 t! J{
5 l/ i1 m" T$ f5 A8 G" l* ~logo=1;
0 ]" g8 ? ]3 j0 V: \4 J& Wif(me.pp[c].number<=3 && me.pp[c].number>=0): g& e1 X; B& m' k- E0 |8 B: ~1 P! W
logoo=1;
1 D8 a6 g# c4 Lelse if(me.pp[c].number<=7 && me.pp[c].number>=4)2 |: A! K9 l2 J0 q3 Z' N) J6 ~1 W
logoo=2;+ E' X k9 U v
else if(me.pp[c].number<=11 && me.pp[c].number>=8)9 x' Y7 t4 Y- ]+ O Z
logoo=3;) {# l8 z" K. X) p
else if(me.pp[c].number<=15 && me.pp[c].number>=12)
" S. g0 @+ h" H" ologoo=4;
% I% @& o$ [: U/ \/ x" oelse if(me.pp[c].number<=19 && me.pp[c].number>=16)
, }6 G8 H* J+ k, r1 Qlogoo=5;
) B6 `* v* ?' m& j4 jelse if(me.pp[c].number<=23 && me.pp[c].number>=20)
- J0 B$ I, i9 B) ]. d0 nlogoo=6;( i. S" J/ e) l$ r0 { V5 M
else if(me.pp[c].number<=27 && me.pp[c].number>=24)
6 Y4 [ C0 h* S* Zlogoo=7;0 c1 [6 x$ i7 F2 d, {5 v
else if(me.pp[c].number<=31 && me.pp[c].number>=28); N- ~9 @3 t# ~3 G, B* ` |
logoo=8;
# \6 D/ t5 b* s& L( X; e9 Jelse if(me.pp[c].number<=35 && me.pp[c].number>=32)( c: Q. K; ~( ?6 n k4 N0 G9 a
logoo=9;
1 r( E7 [8 [4 N8 ]9 o- b) n7 u}# [: q( W2 \# R4 c" r0 R
else if(me.pp[c].number<=71 && me.pp[c].number>=36)
" y' ]8 \7 |# G+ A7 o( p4 O! m{
8 T4 s% f' q( u9 wlogo=2;$ ~: g8 ]7 n9 _2 y1 v
if(me.pp[c].number<=39 && me.pp[c].number>=36)6 w, T# M4 J( O& I- G
logoo=1;
/ ~4 P# e0 q$ s; u7 h% G* Gelse if(me.pp[c].number<=43 && me.pp[c].number>=40)( x R H; @. C$ J
logoo=2;" a5 F& ]6 r; z
else if(me.pp[c].number<=47 && me.pp[c].number>=44)& H( t( u+ p6 Z1 r+ ^- T# }
logoo=3;7 {8 C# M0 j6 d3 \! Z
else if(me.pp[c].number<=51 && me.pp[c].number>=48)
$ r: R% Q. ^3 K" G- ilogoo=4;
% ~0 W$ C% l5 s& S4 u4 {& U6 h0 Relse if(me.pp[c].number<=55 && me.pp[c].number>=52)* g4 ~# W: v |& t4 c/ _/ [. \* H5 ~
logoo=5;
( C6 f. l# F1 B& m- y. m4 relse if(me.pp[c].number<=59 && me.pp[c].number>=56)5 T6 }# s* b4 P8 ^
logoo=6;
% C3 Q, Z A% V8 l( `else if(me.pp[c].number<=63 && me.pp[c].number>=60)
( k7 t# O3 R1 X8 l+ A- b& Wlogoo=7;
0 l4 j5 s' W$ O& U0 N; Yelse if(me.pp[c].number<=67 && me.pp[c].number>=64)$ B4 @* n9 P$ i, B( H
logoo=8;
& N6 s( [8 k) ^& Q8 m6 Q8 relse if(me.pp[c].number<=71 && me.pp[c].number>=68)
/ E7 D2 d& f8 X; {logoo=9;2 J. c; Q/ j$ y; k2 X0 X$ R6 c. \
}- y# ?5 f$ y' d4 y, ?) u
else if(me.pp[c].number<=107 && me.pp[c].number>=72)
+ K ?# Y: m* c& }* V{
) ~0 b# h9 C" q- rlogo=3;0 \" L4 n+ M, k1 F4 ^4 p
if(me.pp[c].number<=75 && me.pp[c].number>=72)
% l$ ]" @+ ^ a: Ologoo=1;
$ L, Q: R3 U8 @( D9 h& Helse if(me.pp[c].number<=79 && me.pp[c].number>=76)
, S2 k7 m2 E' U& ~* q6 E+ Clogoo=2;
8 y( U# J" |3 zelse if(me.pp[c].number<=83 && me.pp[c].number>=80)
0 _0 z3 s$ |8 F2 Y) Blogoo=3;! N, a ^! \6 H8 f6 S
else if(me.pp[c].number<=87 && me.pp[c].number>=84)9 R2 U( T) k$ X4 r8 E
logoo=4;
7 t d& [7 s3 D& \else if(me.pp[c].number<=91 && me.pp[c].number>=88)" h2 Z1 j$ ~5 T9 K1 I. e# ~; T
logoo=5;
Z( N8 S$ g9 H9 O* Lelse if(me.pp[c].number<=95 && me.pp[c].number>=92)
& W# t/ O+ X; q; D8 tlogoo=6;
# L; E% B, t9 d- W/ l8 zelse if(me.pp[c].number<=99 && me.pp[c].number>=96)3 u7 H" i& E! Y4 \& N) r
logoo=7;
! R$ E% N; E8 u, ~else if(me.pp[c].number<=103 && me.pp[c].number>=100)6 d. Q* O1 M3 B6 ?/ l% Y
logoo=8;
" d2 u5 o: q6 e6 |, o: Belse if(me.pp[c].number<=107 && me.pp[c].number>=104)" x: v# D: y W' Q
logoo=9;
6 I8 F+ a& D1 p}0 C; `" v @; x9 u9 E
else if(me.pp[c].number<=135 && me.pp[c].number>=108) ]' z/ ?$ V/ g" e' O
{
; L- O: L; K' E4 ?- a7 }logo=4;
. B7 W2 O' V0 k8 k+ \/ ] yif(me.pp[c].number<=111 && me.pp[c].number>=108)
2 X' m$ B5 R' V+ B( S& {logoo=1;
6 w' g. f' m) B$ P$ }% v! m& Eelse if(me.pp[c].number<=115 && me.pp[c].number>=112)9 R5 M0 W/ w" d" y7 ]% ~8 L% f
logoo=2;
% p& ~( A. W& T& e( P! Belse if(me.pp[c].number<=119 && me.pp[c].number>=116)
, c3 h$ Q5 _4 s Z2 Qlogoo=3;- K: o/ w$ o- j( C& C0 h D
else if(me.pp[c].number<=123 && me.pp[c].number>=120). L* w% C( ] ]! m2 ]
logoo=4;
' p. ^' Y' p- a! K/ }) F8 R. relse if(me.pp[c].number<=127 && me.pp[c].number>=124)' A# k& c4 W/ M) g
logoo=5;
7 V" h& `3 c/ D/ Nelse if(me.pp[c].number<=131 && me.pp[c].number>=128)
( y3 N3 Y9 g) U" R9 Clogoo=6;
9 r$ p; W# \, O% V1 ^1 E; selse if(me.pp[c].number<=135 && me.pp[c].number>=132)
) _+ D$ S8 L4 Wlogoo=7;
7 [4 l0 E' Y% i' [+ j! c}; t8 c2 F0 P* Q. J8 |- @
while(b<=computer.m)$ I7 R6 q- I3 Z' Z+ V+ b5 Z0 ?
{/ C& G; D- W( z3 y! O# N( b
if(computer.pp.number<=35 && computer.pp.number>=0) /*假定电脑经过分析后出了第一张牌*/6 s3 V9 m+ u5 e
{ g% A" y+ U& ~5 i8 {, ~
lg=1;7 U6 O4 w1 g4 W& t8 W3 X* D
computer.pp.d[0]=1;
1 M% j9 w7 z& S" c& ^( y. Tif(computer.pp.number<=3 && computer.pp.number>=0)" j0 y3 l/ |# ?, N
{. B$ V. C0 B: g- L, _2 g
lgg=1;3 E: \3 Y7 g' G
computer.pp.d[1]=1;0 F W$ Q0 a" M" Y; r( _& v+ o! \
}
9 x% P- a" V6 u, P& F0 F' felse if(computer.pp.number<=7 && computer.pp.number>=4)2 U2 c6 `2 x0 S+ s0 C9 P4 ~* B9 h, p1 B
{
/ l3 e. f* J0 r0 wlgg=2;1 {' C+ g; l' O$ }
computer.pp.d[1]=2;
e- ?3 e5 Y) q- ^1 m6 Z}4 S! a' ] V0 g9 h# w; _
else if(computer.pp.number<=11 && computer.pp.number>=8)- `7 x6 ]; F, t8 D
{
6 B* H5 v1 T' s- a+ _$ nlgg=3;
+ h& a# T8 N+ _: K' Ycomputer.pp.d[1]=3;% c. p) j/ U' f$ j* J( L' r
}$ I; J/ M1 ~2 U% _
else if(computer.pp.number<=15 && computer.pp.number>=12)0 J* v* m6 J# ]0 F# ^$ o* ?! j+ p% W
{
; z' z* g: p/ g3 ~" R% dlgg=4;% r2 n' j; {% P, m: H' z; y. X" n
computer.pp.d[1]=4;
0 g- v( `% L" t5 W$ W/ Q}: O' Y. T R/ a" ~ a2 a0 n: x
else if(computer.pp.number<=19 && computer.pp.number>=16)
$ g4 x: a$ y4 X3 k- n7 C{
0 w0 q, r% c& n( Y. z* ^lgg=5;
7 L9 S- ~" R- E1 N- W5 U1 bcomputer.pp.d[1]=5;' t; x& Y, j6 @$ n4 O2 Q/ j1 W
}6 [" w0 E! Y6 H
else if(computer.pp.number<=23 && computer.pp.number>=20)5 k% Z7 A" l5 C% O3 M) l
{
( \# _/ |3 P8 A3 t9 n+ h: jlgg=6;
1 @& l& i @# ?- Wcomputer.pp.d[1]=6;+ \. {5 ]' v) W Q
}
8 P# }! T) [/ b+ b6 }: `else if(computer.pp.number<=27 && computer.pp.number>=24)3 k. Y" S" H7 {% b1 t+ E N
{
; x8 U8 a1 ?3 D. \' z& x7 r* n( jlgg=7;" s& j$ L8 y7 t$ V9 T" M2 C( V' p
computer.pp.d[1]=7;0 d; J) y5 D( U$ E% L% I& F
}/ j8 f k; ?4 i$ d
else if(computer.pp.number<=31 && computer.pp.number>=28)
2 Z3 Y O' Z' G) ?; T6 \9 v3 O4 p{. N; h% u) |- s4 O4 C$ B
lgg=8;
- l X+ c: U* icomputer.pp.d[1]=8;0 g5 b: b2 Z8 ] m8 p' s/ ~) Y
}4 Z4 |3 ~( i8 [: q
else if(computer.pp.number<=35 && computer.pp.number>=32)( D5 Q2 x3 Z4 t. N. S6 V( M
{
. f+ @5 d3 }. {) v# elgg=9;! C/ z: O V, Y9 m
computer.pp.d[1]=9;# D+ f: j/ \& S' l3 `7 ]7 P
}0 Z- m; [) q: s6 H# H
}
) J$ K/ T2 e, G& U8 v9 felse if(computer.pp.number<=71 && computer.pp.number>=36)
$ V( a/ \# }: h5 s: F{. u+ A2 S7 x2 g- `& U2 j5 w5 a l
lg=2;
) }8 \+ {0 z8 D/ ` B$ H' pcomputer.pp.d[0]=2;
5 H# |: L+ Q5 o2 ]' Hif(computer.pp.number<=39 && computer.pp.number>=36): c- j% _- b9 t) K/ Q
{1 Q# y3 I; y! a s9 S
lgg=1;1 U0 _7 {( {+ P* @. V
computer.pp.d[1]=1;
( ~2 z! ]+ H0 H+ m}2 a7 v' m- {7 D" ^- N% p8 H
else if(computer.pp.number<=43 && computer.pp.number>=40)
8 A* _0 ]1 e/ D/ K/ f{
5 ] E' i8 i4 q$ Ilgg=2;
% g% R: ~. q3 W: s( i ?, Tcomputer.pp.d[1]=2;
7 r& k& ?$ F2 c0 Y}0 N7 I; d; y' u0 q9 j
else if(computer.pp.number<=47 && computer.pp.number>=44)( Q w$ X. d Z
{
' e$ m/ P1 q4 p/ Ylgg=3;
3 O, ^! s* u# d: q: y. Y0 _computer.pp.d[1]=3;8 r% ?8 }; E" E7 K& V) S- U
}
' ]1 n1 P* @* I, [5 K) belse if(computer.pp.number<=51 && computer.pp.number>=48)
: o- y- Q8 P7 S{
7 F1 k: k Q" Y. Glgg=4;
) b. |) v6 `+ tcomputer.pp.d[1]=4;8 \3 I) p6 N7 f0 e* y
}
$ H0 t& y4 ]' ~: B* i: R- t" L" Pelse if(computer.pp.number<=55 && computer.pp.number>=52)
+ q/ ^3 l% J; t{- h& s9 W G8 J# m, [
lgg=5; r& R. z3 n( v
computer.pp.d[1]=5;
) x+ t' ?; _- Z" j2 O}7 C: ?2 v7 U7 r, m
else if(computer.pp.number<=59 && computer.pp.number>=56)
* U! m" E/ E8 i; I{# a' M Q( M! S0 k
lgg=6;
( b( Y6 [$ Y2 |: pcomputer.pp.d[1]=6;
- A1 z7 P1 R! E# k* N; Q}6 W- }4 ^# q# ?( d/ d- R
else if(computer.pp.number<=63 && computer.pp.number>=60)7 ^7 u- h0 C6 r# `% l) R
{
4 b, _. J1 Z/ W" D- p# f: [lgg=7;; w6 v6 b- k! `! k2 t. v8 v
computer.pp.d[1]=7;
; f4 g: a; }. }) {& t; R6 F+ b}
5 h9 @3 H4 K7 O5 S) t0 F$ H4 \5 Lelse if(computer.pp.number<=67 && computer.pp.number>=64)
0 \8 v) ~, |1 M5 S8 g I0 j+ ?{0 G, q4 x; V4 X4 i) z
lgg=8;
( }) d4 f5 A7 ?- }' Kcomputer.pp.d[1]=8;
9 ] C0 @/ H5 t( j( _) t}1 \- S5 g0 n8 x7 o7 s% e
else if(computer.pp.number<=71 && computer.pp.number>=68)
' H$ k1 I' E" [{6 Z4 n( n6 w9 L j! w/ t
lgg=9;
3 u; a5 L- R. @% Acomputer.pp.d[1]=9;+ P7 T+ Z3 s( m* b6 o
}# G' q% v F0 N$ z$ l
}0 ^ H0 c9 O! f
else if(computer.pp.number<=107 && computer.pp.number>=72)2 O$ j7 ]/ k+ `; {- U) x! u+ n. o
{# s. E* n% w. t
lg=3;
! T& n* d, b2 }" k8 xcomputer.pp.d[0]=3;
: ~! q# Q) }) Qif(computer.pp.number<=75 && computer.pp.number>=72)
/ X* a9 X- P# h5 _{
) f! T7 X* L" H; \5 Q* L1 c: ]) D3 flgg=1;; t& ^' D/ X1 X, v& Q y" v8 m6 w
computer.pp.d[1]=1;* U. y; O7 ?$ T4 C( i
}
5 _0 X) C; }, ~else if(computer.pp.number<=79 && computer.pp.number>=76) r/ y* V. {# P `
{
, I$ A9 v4 ~0 B2 P$ Vlgg=2;- H% |8 s g. L7 q& k' W
computer.pp.d[1]=2;5 i; _% o; m$ V' g1 G8 q- R
}7 \3 Z* ^& F, s% I
else if(computer.pp.number<=83 && computer.pp.number>=80)
6 O* W. |! _- l9 d% n5 U6 K{# q* m a4 ]& I* O U
lgg=3;
* q4 O, G) }" u( r% ^computer.pp.d[1]=3;
' f9 K# Z0 |4 |+ \8 v}# K' z0 R8 h& ^( r8 W9 G
else if(computer.pp.number<=87 && computer.pp.number>=84)
/ ]' k( c8 \. P{
& |. `+ W5 \8 ?% V2 Clgg=4;4 {/ s3 X9 ^( x7 I. w1 E, u- C( ]
computer.pp.d[1]=4;
7 c* w% Z% f- H& U}
" D- m3 l) v9 S) n. zelse if(computer.pp.number<=91 && computer.pp.number>=88)
- N1 E3 K3 y0 `7 Q3 n2 s) |{; w% x/ S; _& B3 O V* r
lgg=5;
0 T% I% j9 h5 d/ O/ o' x3 Vcomputer.pp.d[1]=5;* v- W$ Z3 S# e0 H
}
( }" R' r7 q8 L8 k0 F, I8 W* _4 Aelse if(computer.pp.number<=95 && computer.pp.number>=92)
3 k" A3 f" S7 l! @! }; J4 Y. |! y4 a{
) {2 m8 N$ X6 hlgg=6;# F k4 w5 X% ~, _
computer.pp.d[1]=6;- X Y) O7 j, G* ^ V
}
1 J' F' h8 c3 Q l( T, a/ j& c/ ^else if(computer.pp.number<=99 && computer.pp.number>=96)! B E- i3 V( r
{
0 `; ~- U8 h" _) ^lgg=7;7 Q+ x/ X ~& n) r2 A! i# |/ I
computer.pp.d[1]=7;' j( Z; z( P" _) ]
}" Y* o/ s; }) y: k1 ?) e
else if(computer.pp.number<=103 && computer.pp.number>=100)
& @% W' j& g4 ?: C. i{
$ V. v1 P, C# t5 ]* ilgg=8;1 D- ]3 {! Z0 y. x( P/ v5 e
computer.pp.d[1]=8;
: d3 N. _8 a; Z7 C H: M1 _}
2 K. l5 l. ] d% C: s4 a$ `0 Eelse if(computer.pp.number<=107 && computer.pp.number>=104)- l+ h$ w' u( Q5 x( T# G6 j
{
9 R0 @9 S9 R) D6 l* }) p1 T* k- ~lgg=9;- _9 v3 ]* A! x5 _# n
computer.pp.d[1]=9;) I" ?2 H- d9 ]1 [) z" E. G( m
}
+ W8 A$ R4 W& x9 e! p' `}
4 x9 j2 ^; U9 }else if(computer.pp.number<=135 && computer.pp.number>=108)
0 Y+ N3 w {& ~/ H1 G5 @{
* f" c# w; P9 y* Z4 r0 h6 Nlg=4;
/ _& C; | y/ _0 p/ p* @computer.pp.d[0]=4;; \6 a" ?; h! A
if(computer.pp.number<=111 && computer.pp.number>=108)
6 j0 H0 l6 I" W" E{
3 I" a) ?* O1 e; l, k6 Olgg=1;# y1 b$ R6 B' o% J6 i
computer.pp.d[1]=1;
* F" p$ X6 p& u9 P/ k5 ^# V}1 x `6 N) r K- U9 u0 `
else if(computer.pp.number<=115 && computer.pp.number>=112)" {9 U- Q/ b$ z8 E f, M
{
6 d, n, D5 A) o6 f7 {" s% z+ nlgg=2;
# O5 p+ Z" P& k; F' X4 ?computer.pp.d[1]=2;
L# I$ R. k& r$ n}
! f! Y3 ]$ B% w) Xelse if(computer.pp.number<=119 && computer.pp.number>=116)
4 R: F. w3 ^% T( m/ q* k{$ `$ v' F B8 L% T" h$ X! @( M3 z
lgg=3;0 g; `1 S9 z1 d( }! r
computer.pp.d[1]=3;
: y4 q# {1 l" }0 }, k y}
' f3 J, g& L% l5 ^6 b: Zelse if(computer.pp.number<=123 && computer.pp.number>=120)
( d1 u0 L, D; s9 e8 J{
. H/ X: ]9 y0 {0 Z. r/ w4 nlgg=4;
V% X* f2 y6 }: {' kcomputer.pp.d[1]=4;
$ S5 |) J! n" J. ~. N# W. v7 }- K}) k1 B+ ` g- O+ a3 D8 U
else if(computer.pp.number<=127 && computer.pp.number>=124)' ^; V# z; r/ v) R" Z
{1 L4 u8 |! P( Z. E
lgg=5;
5 j. C$ A' H7 p8 S' f9 x% g6 Lcomputer.pp.d[1]=5;
8 a( e3 O2 f$ N6 d$ H3 }. {}3 _4 ]: J6 ]' J0 `8 O7 ]. f
else if(computer.pp.number<=131 && computer.pp.number>=128)& g+ G- q4 m( m: R, f
{9 q% v- ~. W5 o
lgg=6;
% D. ~- P* g. \) \& ocomputer.pp.d[1]=6;
; G4 W M% F: ]! s# l2 H \$ m4 S}
, E7 l6 w2 s$ D/ velse if(computer.pp.number<=135 && computer.pp.number>=132)
. L4 X* S7 P& E/ h+ q/ ^! ]{
* S$ X* R* D$ a0 j% g- Xlgg=7;: D6 k& u6 b5 N/ p. N1 T2 p" \; u
computer.pp.d[1]=7;+ Z8 Q; x" Z5 N) `0 @- P
}5 U$ c# |! Q- Y1 z; B- b0 k
}
9 Z6 ?+ l3 \- V( ~; f" E! a/ W4 j7 Q0 Z
' g2 o" v: k1 l- k9 x) r5 R3 | Aif(logo==lg) /*如果相等的话,那再进一步的判断,乓杠的判断*/. F! V- q9 p/ P# f' Z: v! o" }
if(logoo==lgg)5 F! W7 ^6 s' O7 ^
pg++;
+ I. q% N- A4 j' Cch.lg=lg; /*保存电脑手里的每张牌的信息*/ O5 q& U$ h, g" A1 ~8 u& }
ch.lgg=lgg;) a$ K8 I- }+ z$ y- B; ]! U' `
lg=0;
8 F, G6 n2 b3 K) z, Zlgg=0;
0 |6 Y+ w2 [ |( Fb++;% U3 Q. ]2 ~0 H
}" T2 R# _9 z- u8 z
if(pg==2) /*乓*/# ]3 X! c- m+ w+ f1 v
{$ p+ s& s( \& R1 c
: \% I6 H/ l& X# d
sing=1;
V, ^* |+ u/ I9 [* m; b' ib=computer.m;
) h4 U6 h% A+ L/ { ^1 Pwhile(b!=-1)
+ w0 A' @* S4 a5 K. m{
5 r, T1 W2 `$ yif(strcmp(me.pp[c].k,computer.pp.k)==0)
6 k/ j% z y V) e6 C: |computer.pp.p=1;
9 A; A; r* x* D9 u p9 U. L
2 a$ \8 X* w1 T" A; k7 c" }b--;
0 M$ A& Q0 \5 Y3 V}
8 t. |( S: g* A# R2 q+ I}2 w1 _! k& J* X( G+ f) |+ V
if(pg==3) /*杠*/
8 l6 J, h$ g) d- x$ X2 K{
, t% K1 R. f" \# N; {
& a+ ]" ~0 e# Ssing=2;
& n6 B: s) o: d9 c# M8 Hb=computer.m;% S/ ] w( y/ I. O, z
while(b!=-1)
" l1 Y, U3 P) q$ d: q{
! K: d/ k1 _$ z4 T7 X; m7 l' Tif(strcmp(me.pp[c].k,computer.pp.k)==0)5 K" f: L- h. o; _& N
computer.pp.g=1;6 a4 v: ^$ F+ l
b--;
, f: O& M/ l" X1 o3 |0 f3 f}
x* D7 E# ~, d0 k5 ]! R9 J}+ e3 G$ h/ \" {4 T; d7 X
f=0; L) [7 ?: `; G/ w$ I+ U5 E2 V" h
while(f<computer.m) /*吃的判断*/ D A! \! V6 Y3 i
{ if(ch[f].lg==logo && ch[f].lg!=4)$ S: K, Y0 c+ w, j H3 k/ i! Z
{
f% V5 }9 U/ h0 I1 U4 cif(ch[f+1].lgg-ch[f].lgg==1) /*顺吃*/
]) H. s3 l- w- t6 Z. t, Y# ~if(ch[f].lgg-logoo==1)* v7 t6 a' m+ t+ j' M
{
$ c( [+ E: r+ t$ Zgp++;
" s, i7 h5 V: ]computer.pp[f].c=1;9 e# Y& l) n6 k0 V
computer.pp[f+1].c=1;: B. Y7 D. L7 H9 t* O: k3 c
}
- j) F; v( `& C$ ^5 `- m. pif(ch[f].lgg-ch[f+1].lgg==-1) /*逆吃*/
( v7 O# c* g& Z. k% b( ?if(ch[f+1].lgg-logoo==-1)8 E! B% Q3 A$ ^8 c+ l: u
{
7 U3 A/ H( j( i! f# G1 rgp++;
# H8 q: T" f* ~7 U, [computer.pp[f].c=1;5 O5 P! Y& f+ H* y9 J5 X9 v& X5 A
computer.pp[f+1].c=1;( I' S! e8 ]$ U" a4 n- g2 K
}' R0 W0 s; u' X" Z/ A r0 u
if(ch[f].lgg-logoo==-1) /*中吃*/- X& V! L, H: r# B, k
if(ch[f+1].lgg-logoo==1)
9 w: {% o8 o- z- \{8 F* R3 K4 B" Q! ]+ Z' g# U8 q
gp++;, x4 k, d( m0 ^& r/ L+ T
computer.pp[f].c=1;# D+ w, n Z+ f, j5 r# d8 R
computer.pp[f+1].c=1;) X2 p! d* a) @- t3 ]
}
: k; I! E4 F% x$ H( n9 K# b& c! cif(gp==1)
% F8 \; e- z9 z4 ubreak;+ {! ]9 P: N4 H/ f3 |; w8 p
}1 U3 R) y% w# W
f++;
/ @3 |$ W' b) Z( U1 ]/ `}! @. g3 }' G) T: q( q' U
if(gp==1)
- g" ~0 d4 o0 |0 }, T' k{sing=7;7 H$ n7 a* c5 Z4 A9 r% }+ ^
! n# I% J" V, N' F' B+ b5 F6 [}' {( r, C# R0 @+ D! S" B7 v1 @* X
pg=0;* K+ P$ e6 { s9 I; ~
gp=0;, [9 n9 a4 S; F7 u/ n# M
b=0;
5 w3 [9 @+ I: r% V" I! H}% I( X! }+ x0 l3 @8 U% Z
void rgznme(int c) /*本程序涵数的核心针对我的牌*/3 ^2 l; [/ @# V0 S& [
{ int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0;
/ J6 i2 ?* E# U2 ~6 Q/ Zif(computer.pp[c].number<=35 && computer.pp[c].number>=0)
# J0 `3 \; u$ `. _{
' ^) |) O. y: W8 e* ulogo=1; q7 l' r* s ]) e. V
if(computer.pp[c].number<=3 && computer.pp[c].number>=0)" O( S& w u* A5 { K- L- U# I, D
logoo=1;
/ P, k5 y1 ]& ?4 A8 l. n4 u1 Jelse if(computer.pp[c].number<=7 && computer.pp[c].number>=4)3 k( ?' G/ m( H: R) a$ X
logoo=2;
3 s: W0 ^3 Y. v0 L; a3 Felse if(computer.pp[c].number<=11 && computer.pp[c].number>=8)% r; z3 P# j1 ?! N& G, b
logoo=3;
0 `( H4 X/ g" U/ p/ {2 relse if(computer.pp[c].number<=15 && computer.pp[c].number>=12)
# B1 S/ j; \* T" X9 alogoo=4;+ d2 Z( Z2 L$ q# p5 w7 I1 D
else if(computer.pp[c].number<=19 && computer.pp[c].number>=16)1 }8 V; `! z4 a
logoo=5;- G( [0 l* y& @1 E) e
else if(computer.pp[c].number<=23 && computer.pp[c].number>=20)' W6 P: J+ @) y+ g( L I
logoo=6;2 G% j) P% W, d) ]
else if(computer.pp[c].number<=27 && computer.pp[c].number>=24)
/ r5 ?" m4 M, f3 t' S# H' n1 ~3 a1 x( Wlogoo=7;
9 H& X: t- J9 gelse if(computer.pp[c].number<=31 && computer.pp[c].number>=28)( @0 {. _8 }1 S. y
logoo=8;- e) ^ o4 M6 M4 o2 [) s6 h
else if(computer.pp[c].number<=35 && computer.pp[c].number>=32)2 O4 B! V! P. ^" V0 Q5 t6 p4 n
logoo=9;! V: q7 T# b' W2 ^; L
}
: Y' } G# M# X, s* g% @else if(computer.pp[c].number<=71 && computer.pp[c].number>=36)0 }! E. \9 N* ^) q5 B! B& |
{; s0 \% v G; N
logo=2;
- @ O; Q- F x$ Cif(computer.pp[c].number<=39 && computer.pp[c].number>=36)' ?8 S3 C% C' Q7 r
logoo=1;# }2 |5 q" S% l3 }6 t+ R% ]2 r
else if(computer.pp[c].number<=43 && computer.pp[c].number>=40), e# a/ E8 d- v
logoo=2;/ c/ O- F4 n7 _# A9 l6 C! G
else if(computer.pp[c].number<=47 && computer.pp[c].number>=44)* P. W& \/ G. H( E6 G
logoo=3;
* ~7 J% q! ?- X4 u9 yelse if(computer.pp[c].number<=51 && computer.pp[c].number>=48)6 K! {0 d8 a$ p) ]& P
logoo=4;7 F( v8 _- U) k; [& G4 m
else if(computer.pp[c].number<=55 && computer.pp[c].number>=52)
0 p. M" O$ d; D8 @. T5 P: u0 ~logoo=5;
# [: ?, i8 j# {) D' A0 gelse if(computer.pp[c].number<=59 && computer.pp[c].number>=56)% z$ E. c' j5 b% L ~2 a, P
logoo=6;
5 z# M7 N: r7 b7 t' G/ L1 d- delse if(computer.pp[c].number<=63 && computer.pp[c].number>=60)
2 d$ U+ q A+ J4 Slogoo=7;
5 n `* g& O2 O4 t: X+ w" ?. F0 nelse if(computer.pp[c].number<=67 && computer.pp[c].number>=64)
- u! S; P/ x/ q* ~) v5 \logoo=8;/ z, U( j1 Z, f$ i# M1 m- v
else if(computer.pp[c].number<=71 && computer.pp[c].number>=68)& n1 E( q3 y" t
logoo=9;
; L) X0 {/ G* m7 v8 Z}
6 q+ U3 g& t( {1 J4 e kelse if(computer.pp[c].number<=107 && computer.pp[c].number>=72)
" h0 u$ z7 z% }: @! b# R{1 ]1 E$ M/ a: v' k; }8 z9 n# u% q
logo=3;9 B& s6 a* R7 f) j
if(computer.pp[c].number<=75 && computer.pp[c].number>=72)
# _! }- b! }- U( t& Jlogoo=1;/ `* y- W+ J$ @
else if(computer.pp[c].number<=79 && computer.pp[c].number>=76)* a$ `* O1 n3 |* G' X+ W) g7 h
logoo=2;
' d# L. u' q/ f: L( \3 a# |else if(computer.pp[c].number<=83 && computer.pp[c].number>=80)
% A/ M/ ~& F: f( zlogoo=3;' {% N# H3 C1 b& Z/ m+ C
else if(computer.pp[c].number<=87 && computer.pp[c].number>=84); q3 L6 k' r- u# Z& t$ K" V& k9 }7 ]
logoo=4;
/ c6 f! J+ _& C# L1 lelse if(computer.pp[c].number<=91 && computer.pp[c].number>=88)( W8 u+ P+ `) E: ?; h2 w
logoo=5;
: i$ `2 G% q! W j! V5 Celse if(computer.pp[c].number<=95 && computer.pp[c].number>=92)
6 W( M/ b( R4 r( e4 P" w/ I. S# ]logoo=6;7 \$ P' }% ^7 ~: p
else if(computer.pp[c].number<=99 && computer.pp[c].number>=96)& }6 @7 ~+ a/ }/ i; m7 k% K
logoo=7;
4 }; L; |: G5 j/ Ielse if(computer.pp[c].number<=103 && computer.pp[c].number>=100)7 h+ C6 B* c+ r2 y3 W4 r
logoo=8;( @$ G, _6 _1 }4 V3 D1 [7 h9 X5 Z
else if(computer.pp[c].number<=107 && computer.pp[c].number>=104)
X+ L# h1 c) \" c7 F$ elogoo=9;
0 E5 i/ ]( c* P8 k/ @& W( x) H}8 S1 s) C/ K- J- K( N
else if(computer.pp[c].number<=135 && computer.pp[c].number>=108)9 W' d3 `( n& r( n
{
, K" p2 k9 r/ @! `+ H5 t' H! n& Xlogo=4;
7 z* ^: M9 f; O8 n# X. `if(computer.pp[c].number<=111 && computer.pp[c].number>=108)1 e2 G& a2 P0 p: @0 D3 m& J
logoo=1;: \* _0 E O6 q7 B+ w ^5 ^
else if(computer.pp[c].number<=115 && computer.pp[c].number>=112)
1 L0 \1 S8 M! `3 k9 j+ slogoo=2;
8 v. ]& B0 d, q' T* belse if(computer.pp[c].number<=119 && computer.pp[c].number>=116)2 {9 Z0 x d* R. ^0 m( ?% m
logoo=3;
6 P3 u& k6 L+ s6 t6 Z' @else if(computer.pp[c].number<=123 && computer.pp[c].number>=120)2 ]9 N4 x$ l/ \2 Z! v; C
logoo=4;
% \) |4 D* o; b2 b) v; u" Oelse if(computer.pp[c].number<=127 && computer.pp[c].number>=124)
& j* @) m6 ]- \3 H3 u6 d. h; Elogoo=5;
; {; U" {6 B! I- U8 H* uelse if(computer.pp[c].number<=131 && computer.pp[c].number>=128)
0 F5 P8 _/ G3 }" Y$ X0 Nlogoo=6;% E+ w1 x1 V1 i0 o
else if(computer.pp[c].number<=135 && computer.pp[c].number>=132)
; P/ B0 Z+ Y- O+ Y) k" Xlogoo=7;
/ P; X4 U9 {$ V8 Y, ]( M+ y}
7 `& P2 \, |( A# A% J. jwhile(b<=me.m)
+ W6 m* w. d' c' r( I& o{
9 S* s3 H. O+ A! n' r9 h3 z0 _9 eif(me.pp.number<=35 && me.pp.number>=0) /*我分析后出了第一张牌*/
$ w& p" m4 i2 m, ]: G+ [{8 h& `1 a- q, I: r7 o0 O
lg=1;, S* t( r: x+ F }% Q' T
me.pp.d[0]=1;6 P* |' B+ \8 s8 t5 `! C( [+ G
if(me.pp.number<=3 && me.pp.number>=0)' z- Q$ ]' d" ^. V. ~
{
8 |! a; [- U1 H5 b* d+ l4 Flgg=1;
3 J& D( |1 h* |! V! N Dme.pp.d[1]=1;8 F: [) i. w& z( E* p: m+ w
}
" e+ l- t6 N2 F) Z, A" P$ Qelse if(me.pp.number<=7 && me.pp.number>=4)" d% y1 R4 W: ~" c2 v
{0 l# t! l2 C- d
lgg=2;
+ i3 u6 h) @) h' \6 Rme.pp.d[1]=2;( B8 e9 f5 J" m8 z5 G" b3 _. ~
}
$ i" ~/ V" f. d/ ielse if(me.pp.number<=11 && me.pp.number>=8)) H5 p4 d0 T( j4 t1 ^3 {, V
{( V9 J2 T- {1 o# t+ Q
lgg=3;
% P9 k# n% B6 J0 u3 W2 yme.pp.d[1]=3;
) B3 I) H% a% [4 b" I}& R( r* ^/ B6 e8 c
else if(me.pp.number<=15 && me.pp.number>=12)
" }9 q2 P. o; B' t9 S/ k r Q{
: O5 w5 B+ V1 k f1 r2 d! y3 ]/ O6 ylgg=4;
& }6 E+ s/ X1 X% U) Ime.pp.d[1]=4;- A( ]/ K* O1 l
}
$ v2 \* l# ^; z0 y% aelse if(me.pp.number<=19 && me.pp.number>=16)# { l# U0 p6 r7 b* J, y5 }
{! }% q7 M3 S% j9 b8 i5 P
lgg=5;
. b( }8 Q: q3 a' d8 Ume.pp.d[1]=5;$ M( }" a0 |5 o$ {* N6 H
}
" G/ m _+ Z, felse if(me.pp.number<=23 && me.pp.number>=20): O* K( y4 S$ Z+ i, w/ k' ?7 f8 i
{: L" B+ H N0 J/ b3 M
lgg=6;
& q& c: R% N% xme.pp.d[1]=6;3 ?4 \3 }1 x8 R$ J
}! e6 Y" i& r% A# h0 Y+ O
else if(me.pp.number<=27 && me.pp.number>=24)' p" \ Y8 {( n5 F4 f% m
{3 y, X" s! y( \( o
lgg=7;
4 G5 H! k7 C$ t/ A. F- q) L) S2 Vme.pp.d[1]=7;0 Z4 j) Y2 N4 h4 K! r& A# B/ W8 Q1 ^
}/ s4 U: g, `1 M. L
else if(me.pp.number<=31 && me.pp.number>=28)1 f; { N: S% [' V+ |
{
2 H/ P3 L, [0 l. R' I* {lgg=8;. i n8 V+ g# l# S% C# l
me.pp.d[1]=8;. B) w ~3 R8 z4 S9 ~) s( N6 q; ?& G
}! O/ @( j+ M/ p% a9 a6 w
else if(me.pp.number<=35 && me.pp.number>=32)
k; E" b7 W3 N/ w+ L! {{
! }2 O7 H( S9 clgg=9;
' V/ r% W0 r- q2 G/ Lme.pp.d[1]=9;
" d# w5 x7 v- d+ ^# M2 g}# E6 t+ h- `- p- \: z+ K/ i. A$ [) v
}
% M' p" u8 F' _- o" xelse if(me.pp.number<=71 && me.pp.number>=36)5 d5 } Y! R' w% S. m1 n7 v
{
3 [" B! ^ E, g, E* p' Q+ ]) slg=2;: z7 ?$ |2 M" z$ G( Q8 |
me.pp.d[0]=2;
" f5 c7 D0 J/ _3 J& W7 Pif(me.pp.number<=39 && me.pp.number>=36)
, q6 w. h- d7 o/ S{
5 [6 X, G3 p) m/ F6 [- qlgg=1;
) M# N: M6 `7 K& ?: \me.pp.d[1]=1;' `7 j# X8 k7 v/ P" J
}- N8 R1 G4 L' [# @' \7 e
else if(me.pp.number<=43 && me.pp.number>=40); A! L/ V3 Y; v! j- z3 ~
{# b" a0 |; h. R+ s. Q
lgg=2;0 q& b* ]' A$ F. R9 ~) L
me.pp.d[1]=2;+ t: R& d% T* V5 U3 r' v# X" j# b
}
0 B0 ^! ]( \' celse if(me.pp.number<=47 && me.pp.number>=44)% H# J8 U; J) f; R$ V$ K) G
{
+ p5 u: Z g1 J; rlgg=3;
" J7 l: ^- y" ~* O7 N( v/ @me.pp.d[1]=3;
1 W# h1 t# {- r5 d* Q7 B1 C( W}. p2 t( L3 K; f; M/ y
else if(me.pp.number<=51 && me.pp.number>=48)* J* f8 F1 ?5 z$ D& D
{
4 t5 |$ N0 y/ c% B: Dlgg=4;# Q% E5 ~8 j2 ?7 @0 X/ z- `
me.pp.d[1]=4;% L1 l8 W7 D ^0 R$ ]
}
; x0 Y) \5 {; ^) a2 H: ^+ D' ielse if(me.pp.number<=55 && me.pp.number>=52)
6 _/ v- ]/ g$ o, w# x+ }) t% c! \+ V{% F% b2 ^4 m* W+ X' F7 F: n8 r
lgg=5;
+ ]0 H2 i- ]/ B+ x! Pme.pp.d[1]=5;
4 ~% v" g% S: Y$ y( y4 x}
4 U2 U" t! H! b0 n8 Belse if(me.pp.number<=59 && me.pp.number>=56)4 u) h9 J2 e" S
{
9 r; S, E+ F+ p/ z# blgg=6;
8 g0 {3 `! q: Y& cme.pp.d[1]=6;
+ `, l7 [4 R1 V. t* k r, K1 u}1 c0 v% p. M5 Y" Y# R9 _
else if(me.pp.number<=63 && me.pp.number>=60)* x/ }! ^; q( Y: |
{1 o7 k8 X5 Z0 N; x9 b
lgg=7;
! e3 O9 p- P+ d3 u8 B+ `8 }4 ?) z/ Lme.pp.d[1]=7;
8 ?# F6 b0 e$ P}. G) @$ V8 s( A, K+ }" O. k
else if(me.pp.number<=67 && me.pp.number>=64)- n+ N2 N6 n1 N. l
{" S9 P( a, o& B
lgg=8;
; x$ o; z+ L j f$ Lme.pp.d[1]=8;, S5 P' |7 n2 W( s0 S* S
}/ t' f8 b8 o, t1 p- ^" y
else if(me.pp.number<=71 && me.pp.number>=68)
( N+ r& M3 E" P4 W/ J* {, V5 r{
! O5 Y) H3 z. ~5 O/ |: x# U* L9 Llgg=9;
0 Q1 v4 M0 V3 X" z/ X; t6 b, Vme.pp.d[1]=9;
8 Y- }+ d" e" M, i; E}: ?; {& B* G1 ~
}0 b& E) Q9 q1 ^; [3 Y9 _/ O U
else if(me.pp.number<=107 && me.pp.number>=72)
2 w5 V) X0 Y6 [( s& i% W# I{% m; N ~% [7 a: j# X8 {, {
lg=3;7 C. q8 f$ Q3 E$ h$ h2 j% b( j0 Y
me.pp.d[0]=3;( a c* t0 v, c T- C, r
if(me.pp.number<=75 && me.pp.number>=72)
( t3 R. [; G# B{
* M o/ n" N) ^2 E' E+ blgg=1;
" n- n2 p$ w- V' e; u/ X( ^me.pp.d[1]=1;0 d4 i+ O, B0 A) j# x9 p5 B# C
}( D0 W8 ]: B% o! _/ R
else if(me.pp.number<=79 && me.pp.number>=76)
y7 m( M6 X1 x{
9 c/ t! A$ y0 J2 m! blgg=2;
6 w8 v4 e) m, K" }4 O. E+ F+ Jme.pp.d[1]=2;' n+ x4 V+ T4 E! d% n
}
; ^: p& e3 R9 |0 Zelse if(me.pp.number<=83 && me.pp.number>=80)% b* ~! ?5 b: D4 p3 ~+ r1 z
{2 A/ H. Z: K. d# }
lgg=3;
Z0 Q; g& g; rme.pp.d[1]=3;
1 z$ b4 Q; v$ M}
( Y( p3 d$ [, G7 p2 [else if(me.pp.number<=87 && me.pp.number>=84)( S- ?. N, c( Y# G7 Q
{+ {+ I" W8 z/ z$ M
lgg=4;
2 }: `- {* q7 g1 kme.pp.d[1]=4;5 I& t$ ?7 \+ O2 s) u/ Y
}
6 S% l; p( {, A. n* q6 h2 q6 gelse if(me.pp.number<=91 && me.pp.number>=88)
* x! ] w7 F) |; n; n4 @) n{
" V' W; G. M) [$ Dlgg=5;' l0 m: ^' L% t1 v3 B
me.pp.d[1]=5;- A/ d2 B% \- v3 @7 h2 Q; L8 I- K
}
6 g. V7 v4 T- Oelse if(me.pp.number<=95 && me.pp.number>=92)+ T9 b2 G, ?' Y( @( Y% e
{
( d- F( t* h7 R9 W4 B% Hlgg=6;" z7 ^) O7 u# V2 P+ n4 S
me.pp.d[1]=6;2 |, o; n& ^/ D. F) |9 B9 p3 _
}
. F" y5 p9 `7 oelse if(me.pp.number<=99 && me.pp.number>=96)- v. n' N8 ?" v8 r$ V6 H
{, m- [$ D" i, w
lgg=7;
" x7 a7 C8 o5 |/ d$ d( E" D- l. pme.pp.d[1]=7;" y7 h' l# ?: W/ R. p9 N+ U# K' w
}# x- Z" r$ N: f
else if(me.pp.number<=103 && me.pp.number>=100)