热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言打字母游戏控制台,原创的C语言控制台小游戏

最开始左上色块被感染,通过切换颜色,不断感染同色色块。亮点是可以切换图案,设置方块个数和最大限制次数。整体还是比较满意,希望

最开始左上色块被感染,通过切换颜色,不断感染同色色块。亮点是可以切换图案,设置方块个数和最大限制次数。整体还是比较满意,希望大神指教。

#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;

ece7a237c3366b05ce9d972080a4a252.png

31a4524e1a230320ad258953805e640b.png

ccbf5b5e468587b8035f5faedbf1d7ac.png

e77dde77b9cce4801178a0c5e109d533.png

以上即是本文所述的全部内容了&#xff0c;希望大家能够喜欢&#xff0c;能够对大家学习C有所帮助。



推荐阅读
  • 具备括号和分数功能的高级四则运算计算器
    本研究基于C语言开发了一款支持括号和分数运算的高级四则运算计算器。该计算器通过模拟手算过程,对每个运算符进行优先级标记,并按优先级从高到低依次执行计算。其中,加减运算的优先级最低,为0。此外,该计算器还支持复杂的分数运算,能够处理包含括号的表达式,提高了计算的准确性和灵活性。 ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Objective-C 中的委托模式详解与应用 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
author-avatar
哀乐交加6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有