📄 small.c
字号:
#include <stdio.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/mywindows.h>#include <minigui/mgext.h>#include <minigui/filedlg.h>#include <minigui/newfiledlg.h>#include <minigui/control.h>#define SQUARE 56#define STATE_Y 20typedef struct _BASE{ int Value; int Row; int Line; int Length; int Width; BITMAP Picture[27];}BASE;static BITMAP Bk_Ground;static BITMAP Bk_State;static BITMAP Bk_Score;static BITMAP Bk_Record;static BITMAP Bk_Stage;static BITMAP Bt_Clew;static BITMAP Bt_Ruffle;static BITMAP Bt_End;static BITMAP Bt_Restart;static BITMAP Bt_Time;static BITMAP Number[10];static BASE Base;static BASE Choose_A;static BASE Choose_B;static BASE Clew_A;static BASE Clew_B;static int Mode;static int Take;static int Pass;static int SCORE;static int RECORD;static int ClewNum=9;static int RuffleNum=9;static int Count;static int Flag[10][12];static int V_Line[10][12];static RECT Rect={680,336,800,386};static RECT Area[10][12];static int Time;static void SetArea(){ int i=0; int j=0;/* for( i=0; i<10; i++) { for( j=0; j<12; j++) { SetRect(&Area[i][j],0+i*56,0+j*56,56+i*56,56+j*56); } }*/ for( i=0; i<12; i++) { SetRect(&Area[0][i],56*i,0,56+56*i,56); } for( i=0; i<12; i++) { SetRect(&Area[1][i],56*i,56,56+56*i,112); } for( i=0; i<12; i++) { SetRect(&Area[2][i],56*i,112,56+56*i,168); } for( i=0; i<12; i++) { SetRect(&Area[3][i],56*i,168,56+56*i,224); } for( i=0; i<12; i++) { SetRect(&Area[4][i],56*i,224,56+56*i,280); } for( i=0; i<12; i++) { SetRect(&Area[5][i],56*i,280,56+56*i,336); } for( i=0; i<12; i++) { SetRect(&Area[6][i],56*i,336,56+56*i,392); } for( i=0; i<12; i++) { SetRect(&Area[7][i],56*i,392,56+56*i,448); } for( i=0; i<12; i++) { SetRect(&Area[8][i],56*i,448,56+56*i,504); } for( i=0; i<12; i++) { SetRect(&Area[9][i],56*i,504,56+56*i,560); }}static void LoadPicture(){ LoadBitmap (HDC_SCREEN, &Bk_Ground,"./bk/bk_snow.png"); LoadBitmap (HDC_SCREEN, &Bk_State,"./bk/state.png"); LoadBitmap (HDC_SCREEN, &Bk_Score,"./bk/score.png"); LoadBitmap (HDC_SCREEN, &Bk_Record,"./bk/record.png"); LoadBitmap (HDC_SCREEN, &Bk_Stage,"./bk/stage.png"); LoadBitmap (HDC_SCREEN, &Number[0],"./number/0.png"); LoadBitmap (HDC_SCREEN, &Number[1],"./number/1.png"); LoadBitmap (HDC_SCREEN, &Number[2],"./number/2.png"); LoadBitmap (HDC_SCREEN, &Number[3],"./number/3.png"); LoadBitmap (HDC_SCREEN, &Number[4],"./number/4.png"); LoadBitmap (HDC_SCREEN, &Number[5],"./number/5.png"); LoadBitmap (HDC_SCREEN, &Number[6],"./number/6.png"); LoadBitmap (HDC_SCREEN, &Number[7],"./number/7.png"); LoadBitmap (HDC_SCREEN, &Number[8],"./number/8.png"); LoadBitmap (HDC_SCREEN, &Number[9],"./number/9.png"); LoadBitmap (HDC_SCREEN, &Bt_Clew,"./button/b2.png"); LoadBitmap (HDC_SCREEN, &Bt_Ruffle,"./button/b1.png"); LoadBitmap (HDC_SCREEN, &Bt_Restart,"./button/b4.png"); LoadBitmap (HDC_SCREEN, &Bt_End,"./button/b3.png"); LoadBitmap (HDC_SCREEN, &Bt_Time,"./button/time.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[0],"./xiaotu/1.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[1],"./xiaotu/2.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[2],"./xiaotu/3.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[3],"./xiaotu/4.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[4],"./xiaotu/5.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[5],"./xiaotu/6.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[6],"./xiaotu/7.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[7],"./xiaotu/8.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[8],"./xiaotu/9.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[9],"./xiaotu/10.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[10],"./xiaotu/11.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[11],"./xiaotu/12.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[12],"./xiaotu/13.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[13],"./xiaotu/14.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[14],"./xiaotu/15.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[15],"./xiaotu/16.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[16],"./xiaotu/17.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[17],"./xiaotu/18.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[18],"./xiaotu/19.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[19],"./xiaotu/20.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[20],"./line/choose.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[23],"./newline/b_r.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[24],"./newline/b_l.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[25],"./newline/t_r.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[26],"./newline/t_l.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[21],"./newline/h_line.png"); LoadBitmap (HDC_SCREEN, &Base.Picture[22],"./newline/v_line.png");}static void InitLian(){ int i=0; int j=0; int count=0; for( i=0; i<8; i++) { for( j=0; j<10; j++) { Flag[i+1][j+1]=count/4; V_Line[i+1][j+1]=0; count++; } } for( i=0; i<10 ; i++) { Flag[i][0]=-2; Flag[i][11]=-2; V_Line[i+1][j+1]=0; } for( j=0; j<12; j++) { Flag[0][j]=-2; Flag[9][j]=-2; V_Line[i+1][j+1]=0; } Base.Length=55; Base.Width=55; Choose_A.Length=55; Choose_A.Width=55; Choose_B.Length=55; Choose_B.Width=55; Mode=0; Take=0; Pass=1; Count=80; Time=99;// SCORE=0;// ClewNum=9;// RuffleNum=9;}static int OneLine(int a_row, int b_row, int ab_line){ int minrow=(a_row < b_row) ? a_row : b_row; int maxrow=(a_row > b_row) ? a_row : b_row; minrow++; while( Flag[ab_line][minrow]<0 && minrow<maxrow ) { minrow++; } if( minrow == maxrow ) { return 1; } else { return 0; }}static int OneRow(int a_line, int b_line, int ab_row){ int minline=(a_line < b_line) ? a_line : b_line; int maxline=(a_line > b_line) ? a_line : b_line; minline++; while( Flag[minline][ab_row]<0 && minline<maxline) { minline++; } if( minline == maxline) { return 1; } else { return 0; }}static void RowPaint(int a_line, int b_line, int ab_row){ int minline=(a_line < b_line) ? a_line : b_line; int maxline=(a_line > b_line) ? a_line : b_line; minline++; while( minline< maxline) { V_Line[minline][ab_row]=1; minline++; }}static void LinePaint(int a_row, int b_row, int ab_line){ int minrow=(a_row < b_row) ? a_row : b_row; int maxrow=(a_row > b_row) ? a_row : b_row; minrow++; while( minrow<maxrow) { V_Line[ab_line][minrow]=2; minrow++; }}static int JudgeChoose(HWND hWnd){ int minline=0; int minrow=0; int maxline=0; int maxrow=0; int count=0; if( Flag[Choose_A.Line][Choose_A.Row] == Flag[Choose_B.Line][Choose_B.Row] && Flag[Choose_A.Line][Choose_A.Row]>=0 ) {//同一直线 minline = ( Choose_A.Line < Choose_B.Line ) ? Choose_A.Line : Choose_B.Line; minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxline =( Choose_A.Line > Choose_B.Line ) ? Choose_A.Line : Choose_B.Line; if( Choose_A.Line == Choose_B.Line ) { if( OneLine(Choose_A.Row, Choose_B.Row, Choose_A.Line) == 1) {// LinePaint(Choose_A.Row, Choose_B.Row, Choose_A.Line); while( minrow< maxrow) { InvalidateRect (hWnd,&Area[Choose_A.Line][++minrow],TRUE); } return 1; } } if( Choose_A.Row == Choose_B.Row ) { if( OneRow(Choose_A.Line, Choose_B.Line, Choose_A.Row) == 1 ) {// RowPaint(Choose_A.Line, Choose_B.Line, Choose_A.Row); while( minrow< maxrow ) { InvalidateRect (hWnd,&Area[++minline][Choose_B.Row],TRUE); } return 1; } } //经过一次转折 if( Choose_A.Line != Choose_B.Line && Choose_A.Row != Choose_B.Row) { minline = ( Choose_A.Line < Choose_B.Line ) ? Choose_A.Line : Choose_B.Line; minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxline =( Choose_A.Line > Choose_B.Line ) ? Choose_A.Line : Choose_B.Line; if( OneLine(minrow, maxrow, minline)==1 && OneRow(minline, maxline, maxrow)==1 && Flag[minline][maxrow]<0 ) {// LinePaint(minrow, maxrow, minline);// RowPaint(minline, maxline, maxrow);// V_Line[minline][maxrow]=4; return 1; } if( OneLine(minrow, maxrow, maxline)==1 && OneRow(minline, maxline, maxrow)==1 && Flag[maxline][maxrow]<0 ) {// LinePaint(minrow, maxrow, maxline);// RowPaint(minline, maxline, maxrow);// V_Line[maxline][maxrow]=6; return 1; } if( OneLine(minrow, maxrow, minline)==1 && OneRow(minline, maxline, minrow)==1 && Flag[minline][minrow]<0 ) {// LinePaint(minrow, maxrow, minline);// RowPaint(minline, maxline, minrow);// V_Line[minline][minrow]=3; return 1; } if( OneLine(minrow, maxrow, maxline)==1 && OneRow(minline, maxline, minrow)==1 && Flag[maxline][minrow]<0 ) {// LinePaint(minrow, maxrow, maxline);// RowPaint(minline, maxline, minrow);// V_Line[maxline][minrow]=5; return 1; } }//经过两次转折 //外部按行 { minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row; minline= (Choose_A.Line < Choose_B.Line) ? Choose_A.Line : Choose_B.Line; maxline= (Choose_A.Line > Choose_B.Line) ? Choose_A.Line : Choose_B.Line; while( minline>= 0 ) { minline--; if( Flag[minline][maxrow]>=0 || Flag[minline][minrow]>=0 ) { break; } if( OneLine( (minrow), (maxrow) , minline) == 1 ) { if( Choose_A.Line == Choose_B.Line) {// LinePaint((minrow), (maxrow) , minline);// RowPaint(Choose_A.Line, minline, Choose_A.Row);// RowPaint(Choose_B.Line, minline, Choose_B.Row);// V_Line[minline][minrow]=3;// V_Line[minline][maxrow]=4; return 1; } else if( OneRow(Choose_A.Line, minline, Choose_A.Row)==1 && OneRow(minline, Choose_B.Line, Choose_B.Row)==1 && Flag[minline][Choose_A.Row]<0 ) {// LinePaint((minrow), (maxrow) , minline);// RowPaint(Choose_A.Line, minline, Choose_A.Row);// RowPaint(Choose_B.Line, minline, Choose_B.Row);// V_Line[minline][minrow]=3;// V_Line[minline][maxrow]=4; return 1; } } } while( maxline<= 9 ) { maxline++; if( Flag[maxline][maxrow]>=0 || Flag[maxline][minrow]>=0 ) { break; } if( OneLine( (minrow), (maxrow) , maxline) == 1 ) { if( Choose_A.Line == Choose_B.Line) {// LinePaint((minrow), (maxrow) , maxline);// RowPaint(Choose_A.Line, maxline, Choose_A.Row);// RowPaint(Choose_B.Line, maxline, Choose_B.Row);// V_Line[maxline][minrow]=5;// V_Line[maxline][maxrow]=6; return 1; } else if( OneRow(Choose_A.Line, maxline , Choose_A.Row)==1 && Flag[maxline][Choose_A.Row]<0 && OneRow(maxline, Choose_B.Line, Choose_B.Row)==1 ) {// LinePaint((minrow), (maxrow) , maxline);// RowPaint(Choose_A.Line, maxline, Choose_A.Row);// RowPaint(Choose_B.Line, maxline, Choose_B.Row);// V_Line[maxline][minrow]=5;// V_Line[maxline][maxrow]=6; return 1; } } } } //按列外部 { minline= ( Choose_A.Line< Choose_B.Line) ? Choose_A.Line : Choose_B.Line; maxline= ( Choose_A.Line> Choose_B.Line) ? Choose_A.Line : Choose_B.Line; minrow= (Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row; maxrow= (Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row; while( minrow>= 0 ) { minrow--; if( Flag[minline][minrow]>=0 || Flag[maxline][minrow]>=0 ) { break; } if( OneRow( (minline), (maxline) , minrow) == 1 ) { if( Choose_A.Row == Choose_B.Row ) {// RowPaint((minline), (maxline) , minrow);// LinePaint(Choose_A.Row,minrow, Choose_A.Line);// LinePaint(Choose_B.Row,minrow, Choose_B.Line);// V_Line[minline][minrow]=3;// V_Line[maxline][minrow]=5; Flag[Choose_A.Line][Choose_A.Row]=-1; Flag[Choose_B.Line][Choose_B.Row]=-1; return 1; } else if( OneLine(Choose_A.Row, minrow, Choose_A.Line)==1 && Flag[Choose_B.Line][minrow]<0 && OneLine(minrow, Choose_B.Row, Choose_B.Line)==1) {// RowPaint((minline), (maxline) , minrow);// LinePaint(Choose_A.Row,minrow, Choose_A.Line);// LinePaint(Choose_B.Row,minrow, Choose_B.Line);// V_Line[minline][minrow]=3;// V_Line[maxline][minrow]=5; return 1; } } } while( maxrow <= 11 ) { maxrow++; if( Flag[minline][maxrow]>=0 || Flag[maxline][maxrow]>=0 ) { break; } if( OneRow( (minline), (maxline) , maxrow) == 1 ) { if( Choose_A.Row == Choose_B.Row ) {// RowPaint( (minline), (maxline) , maxrow);// LinePaint(Choose_A.Row,maxrow, Choose_A.Line);// LinePaint(Choose_B.Row,maxrow, Choose_B.Line);// V_Line[minline][maxrow]=4;// V_Line[maxline][maxrow]=6; return 1; } else if( OneLine(Choose_A.Row, maxrow, Choose_A.Line)==1 && Flag[Choose_B.Line][maxrow]<0 && OneLine(maxrow, Choose_B.Row, Choose_B.Line)==1) {// RowPaint( (minline), (maxline) , maxrow);// LinePaint(Choose_A.Row,maxrow, Choose_A.Line);// LinePaint(Choose_B.Row,maxrow, Choose_B.Line);// V_Line[minline][maxrow]=4;// V_Line[maxline][maxrow]=6; return 1; } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -