最开始左上色块被感染,通过切换颜色,不断感染同色色块。亮点是可以切换图案,设置方块个数和最大限制次数。整体还是比较满意,希望大神指教。
#include
#include
#include
#include
#include
int DIFFICULT=44;
int count=0 ;
int TYPE_SHAPE=2 ;
int flag=7 ;
int LINE=12;
struct MyStruct
{
int shape ;
int color ;
int infect ;
};
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
}
void WelcomeScr()
{
int i;
printf("\n\n\n\t\t");
printf("●程序初始化中〉");
for(i&#61;0; i<&#61;100; i&#43;&#43;)
{
SetColor(i%6&#43;8,0);
printf("%3d",i);
SetColor(15,0);
printf(" %%");
SetColor(i%6&#43;8,0);
printf(" Written by Oliver!");
Sleep(20);
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
}
printf("\a");
Sleep(1000);
system("cls");
printf("\n\n\n\t\t");
SetColor(15,0);
printf("●请输入方块行数 〉 (最好不超过21行)");
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&LINE);
printf("\n\n\n\t\t");
printf("●请输入最大次数 〉");
scanf("%d",&DIFFICULT);
system("cls");
}
void Show()
{
int i ;
SetColor(15,0);
printf("\n ※ 操作次数&#xff1a; %-2d / %d (共%3d个色块)\n",count,DIFFICULT,LINE*LINE);
printf("\n ※ 操作方法&#xff1a; ");
for(i&#61;1; i<7; i&#43;&#43;)
{
SetColor(15,0);
printf("%d.",i);
SetColor(i&#43;8,0);
printf("%c ",TYPE_SHAPE);
}
SetColor(15,0);
printf("7.");
SetColor(9,0);
printf("重");
SetColor(10,0);
printf("新");
SetColor(11,0);
printf("生");
SetColor(12,0);
printf("成 ");
SetColor(15,0);
printf("0.");
SetColor(14,0);
printf("改");
SetColor(13,0);
printf("变");
SetColor(12,0);
printf("图");
SetColor(11,0);
printf("案 ");
SetColor(15,0);
printf("\n\n ※ 请按下 0 ~ 7 键位> ");
}
int Choose()
{
int choose ;
fflush(stdin);
scanf("%d",&choose);
switch(choose)
{
case 0 :
TYPE_SHAPE&#43;&#43;;
if(TYPE_SHAPE&#61;&#61;7)
{
TYPE_SHAPE&#61;1 ;
}
return 0 ;
case 1 :
return 1 ;
case 2 :
return 2 ;
case 3 :
return 3 ;
case 4 :
return 4 ;
case 5 :
return 5 ;
case 6 :
return 6 ;
case 7 :
return 7 ;
default :
printf("\n\t\t\a● 输入无效&#xff0c;请重新输入&#xff01;");
Sleep(1000);
return 0 ;
}
}
void main()
{
int i,j ;
int num&#61;0 ;
char ch ;
int cc ;
int jj;
struct MyStruct array[41][41];
system("title 感染方块 Oliver&#39;s QQ 564404096");
srand((time(NULL)%100)*rand());
WelcomeScr();
loop :
for(i&#61;0; i
{
for(j&#61;0; j
{
array[i][j].shape&#61;TYPE_SHAPE ;
if(flag&#61;&#61;7)
{
array[i][j].color&#61;rand()%6&#43;1 ;
array[i][j].infect&#61;0 ;
count&#61;0 ;
cc&#61;1 ;
}
}
}
printf("\n");
array[0][0].infect&#61;1 ;
for(jj&#61;0; jj
{
for(i&#61;0; i
{
for(j&#61;0; j
{
if(array[i][j].color&#61;&#61;array[i][j&#43;1].color&&array[i][j].infect&#61;&#61;1&&array[i][j&#43;1].infect!&#61;1)
{
array[i][j&#43;1].infect&#61;1 ;
}
if(array[i][j].color&#61;&#61;array[i&#43;1][j].color&&array[i][j].infect&#61;&#61;1&&array[i&#43;1][j].infect!&#61;1)
{
array[i&#43;1][j].infect&#61;1 ;
}
}
}
for(i&#61;LINE-1; i>0; i--)
{
for(j&#61;LINE-1; j>0; j--)
{
if(array[i][j].color&#61;&#61;array[i-1][j].color&&array[i][j].infect&#61;&#61;1&&array[i-1][j].color!&#61;1)
{
array[i-1][j].infect&#61;1 ;
}
if(array[i][j].color&#61;&#61;array[i][j-1].color&&array[i][j].infect&#61;&#61;1&&array[i][j-1].color!&#61;1)
{
array[i][j-1].infect&#61;1 ;
}
}
}
cc&#61;1 ;
for(i&#61;0; i
for(j&#61;0; j
{
if(array[i][j].infect&#61;&#61;0)
{
cc&#61;0 ;
break ;
}
}
}
for(i&#61;0; i
{
printf(" ");
for(j&#61;0; j
{
SetColor(array[i][j].color&#43;8,0);
printf("%c ",array[i][j]);
}
printf("\n");
}
Show();
if(count<&#61;DIFFICULT&&cc&#61;&#61;1&&flag!&#61;7&&flag!&#61;0)
{
system("cls");
printf("\n\n\n\n\t\t\t●%5d个色块你用了%d步完成 ●",LINE*LINE,count);
printf("\n\n\t\t\t● 恭喜你&#xff0c;您获得了胜利&#xff01;\n");
loop2 :
printf("\n\t\t\t\a● 是否继续&#xff1f;(Y/N)>");
fflush(stdin);
if((ch&#61;getch())&#61;&#61;&#39;Y&#39;||ch&#61;&#61;&#39;y&#39;)
{
system("cls");
flag&#61;7 ;
goto loop ;
}
else if(ch&#61;&#61;&#39;n&#39;||ch&#61;&#61;&#39;N&#39;)
{
system("cls");
printf("\n\t\t\t● 谢 谢 您 的 使 用 &#xff01;\n\n\t\t\t● 作 者: Oliver\n\n\t\t\t● Q Q: 564404096\n\n\t\t\t● 代 码 原 创&#xff0c;版 权 所 有 ●");
Sleep(5000);
exit(1);
}
else
{
printf("\n\n\t\t\t\a● 输入错误重新输入 >");
Sleep(1000);
system("cls");
goto loop2 ;
}
}
else if(count>DIFFICULT)
{
system("cls");
printf("\n\n\n\n\t\t\t\a● 很遗憾&#xff0c;您闯关失败&#xff01;\n");
goto loop2 ;
}
else
;
flag&#61;Choose();
if(flag!&#61;0)
{
array[0][0].color&#61;flag ;
if(flag!&#61;7)
{
count&#43;&#43;;
}
for(i&#61;0; i
{
for(j&#61;0; j
{
if(array[i][j].infect&#61;&#61;1)
{
array[i][j].color&#61;flag ;
}
}
}
}
system("cls");
goto loop ;
}
演示图&#xff1a;
以上即是本文所述的全部内容了&#xff0c;希望大家能够喜欢&#xff0c;能够对大家学习C有所帮助。