📄 clean_line.c
字号:
#include<gtk/gtk.h>#include"main.h"#include"drawboard.h"#include"clean_line.h"#include"time_tick.h"extern gint* board1[COLUMN1];extern gboolean* mark_board1[COLUMN1];extern gboolean ispause;extern gint score;extern gint row;extern gint level;extern gint timespace;extern gint timerid;extern GtkWidget* lscore;extern GtkWidget* lrow;extern GtkWidget* llevel;static CleanAbleLineaccount_board(gint max,gint min){ gint i,j,k; CleanAbleLine tem; for(i=0;i<4;i++){ tem.ycoord[i]=-1; } k=0; for(i=max;i>=min;i--){ tem.ycoord[k]=i; for(j=0;j<COLUMN1;j++){ if(0==board1[j][i]){ tem.ycoord[k]=-1; break; } } k++; } return tem;}static gbooleanclean_line(GtkWidget* window, pcleanline cleanline){ gint i,j; gint k,h; return TRUE;}static gbooleanlevel_up(GtkWidget* window){ gchar str[20]; level++; sprintf(str,_("level: %d"),level); gtk_label_set_text(llevel, str); /* timespace if declared in main.c */ timespace=timespace/2+50; g_source_remove(timerid); timerid=g_timeout_add(timespace, time_tick, window); return TRUE;}gbooleanrenew_the_app(GtkWidget* window){ gint i,j; gchar str[20]; ispause=TRUE; if(timerid==0) return TRUE; g_source_remove(timerid); timerid=0; score=0; row=0; level=1; sprintf(str,_("level: %d"),level); gtk_label_set_text(llevel, str); sprintf(str,_("row : %d"),row); gtk_label_set_text(lrow, str); sprintf(str,_("score: %d"),score); gtk_label_set_text(lscore, str); for(j=0;j<ROW1;j++){ for(i=0;i<COLUMN1;i++){ board1[i][j]=0; } drawboard_draw(window, board1, COLUMN1, ROW1, 1); } for(j=0;j<ROW2;j++){ for(i=0;i<COLUMN2;i++){ board2[i][j]=0; } drawboard_draw(window, board2, COLUMN2, ROW2, 2); } return TRUE;}gbooleanclean_board(GtkWidget* window, gint max,gint min){ CleanAbleLine tem; gint i,j,k; gint temval=0; gboolean hasfullline=FALSE; gchar str[20]; if(min<=2){ /* Prove that the modules is on the top, so fail in game. */ g_source_remove(timerid); timespace=TIME_SPACE; } if(min>max){ g_print(_("In clean_board() min>max \n")); return FALSE; } tem=account_board(max,min); for(i=0;i<4;i++){ if(tem.ycoord[i]>=0){ hasfullline=TRUE; } } if(!hasfullline) return TRUE; for(i=0,k=0;i<4;i++){ if(tem.ycoord[i]<0){ continue; } k++; } switch(k){ case 1: score+=SCORE_ONE_ROW; break; case 2: score+=SCORE_TWO_ROW; break; case 3: score+=SCORE_THR_ROW; break; case 4: score+=SCORE_FOR_ROW; break; default: break; } if((row/LEVEL_STEP)!=(row+k)/LEVEL_STEP){ level_up(window); } row+=k; sprintf(str,_("score: %d"),score); gtk_label_set_text(lscore, str); sprintf(str,_("row : %d"),row); gtk_label_set_text(lrow, str); for(i=0;i<4;i++){ if(tem.ycoord[i]<0){ continue; } for(j=0;j<COLUMN1;j++){ board1[j][tem.ycoord[i]]=0; } } drawboard_draw(window, board1, COLUMN1, ROW1, 1); for(i=0;i<4;i++){ if(tem.ycoord[i]<0){ continue; } for(k=tem.ycoord[i];k>0;k--){ for(j=0;j<COLUMN1;j++){ board1[j][k]=board1[j][k-1]; } } for(k=i;k<4;k++){ if(tem.ycoord[k]<0){ continue; } tem.ycoord[k]++; } } drawboard_draw(window, board1, COLUMN1, ROW1, 1); return TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -