要用C语言编写一个单机小游戏,首先得安装一个图形库。在这里我用的是EasyX 图形库,EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程。

比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。
后续我也会间断性编写一些小游戏,主要目的还是昨天说的,为了更快的得到正反馈,让初学者提高编程兴趣。
这是图形库的下载地址:
http://pan.baidu.com/s/1qYfWJne安装好后就可以用了。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<time.h>

我用的开发环境是Microsoft Visual Studio
当用到scanf()输入函数或sprintf()字符串格式化输入函数时会有安全警告。
第一句:#define _CRT_SECURE_NO_WARNINGS    作用是去掉vs的这个安全警告,具体原因将会在后面更新的博客中解说。
第三句:#include<graphics.h>   这就是调用我们安装的easyX图形库了。
第四句:#include<conio.h>    srand();rand();两个函数所在的头文件,srand()是初始化随机种子,srand()配合time(NULL)用从而达到产生不重复的随机数的目的,rand()是产生随机数,srand()和rand()函数的具体解释也在后面的博客中解说,现在只需依样画葫芦便可。
第五句:#include<time.h>   是time()函数所在的头文件。
int main()
{initgraph(600, 400);//初始画布600*400像素,和closegraph()成对出现int x, y;//字母随机出现的坐标char target;//字母int key;//记录用户按键char s[10] = { 0 };//score:显示得分char f[10] = { 0 };//wrong:显示失败分数int score = 0;int wrong = 0;sprintf(s,"SCORE:%d",score);//将整型score转换成字符串,格式化写入到字符型s中。outtextxy(0,350,s);//将s字符串得分在0*350的位置输出sprintf(f, "WRONG:%d", wrong);//格式化输入失分outtextxy(0, 375, f);//丢分输出srand((unsigned int)time(NULL));//生成随机种子//循环出现字母while (1){target = 65 + rand() % 26;//随机生成大写字母,65-90是大写字母的ASCII码,在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个               //随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,故这句取值范围:65-90x = 30 + rand() % 540;//字母在x轴出现的位置//判断是否结束游戏if (wrong == 10){cleardevice();//清屏settextstyle(40,0,"宋体");//设置字体样式settextcolor(RGB(177, 174, 46));//字体颜色sprintf(s, "SCORE:%d", score);//格式化输入得分outtextxy(210,130,"GAME OVER");//输出GAME OVERouttextxy(210, 180, s);//输出得分break;//退出while循环}//字母掉落效果for (y = 0; y < 400; y++){settextcolor(RGB(177,174,46));//设置字母颜色outtextxy(x,y,target);//输出字母//字母调到底部扣分if (y >= 390){wrong++;//扣分setfillcolor(BLACK);//填充颜色bar(x, y, x + 20, y + 20);//黑色矩形遮盖字母settextcolor(WHITE);sprintf(f, "WRONG:%d", wrong);outtextxy(0, 375, f);//覆盖上次计分break;//退出for循环}//判断用户是否按键else if (_kbhit()){key = _getch();//记录按键//打字正确if (key == target || key == target + 32){score++;//加分setfillcolor(BLACK);bar(x,y,x+20,y+20);//遮盖字母settextcolor(WHITE);sprintf(s, "SCORE:%d", score);outtextxy(0, 350, s);//覆盖上次分数break;//退出for循环}//打字错误else {wrong++;//丢分setfillcolor(BLACK);bar(x, y, x + 20, y + 20);//遮盖字母settextcolor(WHITE);sprintf(f, "WRONG:%d", wrong);outtextxy(0, 375, f);//覆盖分数break;//退出for循环}}Sleep(8);//设置字母下落速度//防止字母掉落时遮盖得得分输出处//y++一次就输出一次得分settextcolor(WHITE);outtextxy(0, 350, s);outtextxy(0, 375, f);}}getchar();//防止闪屏closegraph();//关闭画布return 0;
}

运行后的效果:
在后面的博客中我将会加上贴图技术,和音乐,大致效果:

详细讲解C语言单机小游戏——打字母游戏相关推荐

  1. c语言 字母小游戏,详细讲解C语言单机小游戏——打字母游戏

    要用C语言编写一个单机小游戏,首先得安装一个图形库.在这里我用的是EasyX 图形库,EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程. 比如,可以用 VC + ...

  2. python推箱子代码详细讲解_Python使用tkinter模块实现推箱子游戏

    前段时间用C语言做了个字符版的推箱子,着实是比较简陋.正好最近用到了Python,然后想着用Python做一个图形界面的推箱子.这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找 ...

  3. 详细讲解Html语言的书,HTML语言基础讲解.ppt

    * 提问:根据上述效果图,先抽选一名学员在白板上画出在网页中的显示效果, 其余学员在纸上上书写答案.教员巡视学员基本做完 ,集中评讲 ,给出如图所示的效果图.给予学员鼓励. 参见:TG5-Source ...

  4. 超详细讲解C语言入门函数(一)

    解析已经很详细了,可以说相当入门级别了,如果喜欢的话那就请支持一下,后续会继续更新~ 代码网上搜索,并加以更改,侵权请联系删除,谢谢~ 部分例子没有详细解释是因为前面的例子已经说过了 3×4矩阵求最大 ...

  5. keil内存溢出表现_详细讲解C语言五大内存分区与可执行程序的三段(Text段、Date段、Bss段)【建议收藏】...

    一.c语言五大内存分区 栈区(stack):存放函数形参和局部变量(auto类型),由编译器自动分配和释放. 堆区(heap):该区由程序员申请后使用,需要手动释放否则会造成内存泄漏.如果程序员没有手 ...

  6. 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位

    有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...

  7. 插入排序超详细讲解C语言

    文章目录 算法步骤 动图演示 静图演示 代码实现 复杂度.稳定性分析 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤 将第一待排序序列 ...

  8. 选择排序超详细讲解C语言

    文章目录 算法步骤 动图演示 静图演示 代码实现 普通 升级 复杂度.稳定性分析 选择排序是一种简单直观的排序算法,无论数据是否有序,该排序的时间复杂度恒为 O(N2)O(N^{2})O(N2),所以 ...

  9. C语言编程小练习-英文字母大小写转换

    一.问题描述 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出. 二.问题分析 英文字母大小写之间ASCII码之间差 ...

最新文章

  1. 一小时Thinkphp后台(2)
  2. Django REST framework 分页
  3. Android Gradle 配置Java src目录、Res 目录
  4. 【数据挖掘笔记二】认识数据
  5. JavaScript简介-1
  6. 前端学习(2480):接口文档使用2
  7. NB-IOT使用小结
  8. 人本原理内涵_叶澜教育学原理课后答案资料配套题库考研真题精选课后习题章节题库...
  9. 【AtCoder】ARC100 题解
  10. android 获取邮箱账号,android获取google邮箱
  11. SpringBoot (八)日志配置
  12. jquery 遍历java对象,js/jquery遍历对象和数组的方法分析【forEach,map与each方法】...
  13. 人力资源职位英文缩写汇总(人力资源岗位术语缩写)
  14. MATLAB 生成高清 矢量图+图局部放大
  15. BlackArch---让你有电影中黑客的感觉
  16. 机器学习推导合集02-SVM简明入门1-硬边界SVM的建模过程
  17. Linux 系统学习
  18. 利用开源工具搭一套汉英翻译系统(三):语言模型工具SRILM
  19. emacs Linux Java编程环境_emacs的工作环境设置
  20. VB.NET读取版本信息

热门文章

  1. 英语语法总结--动名词
  2. PFR-3;PFR-5漏电保护器 PFR-W-20;PFR-W-70互感器
  3. 万门大学的软件测试特训班有用吗,为什么我要推荐《万门大学理论物理特训班》?来自一位学员的真实体验...
  4. 【MySQL】C语言连接数据库
  5. 《高速电路设计实践》- 读书笔记
  6. Firmadyne固件模拟路由器环境搭建
  7. 九度题目1173:查找
  8. 麦当劳点餐系统———————新手勿喷
  9. 滨松产品发布会观后感——液晶硅基空间光调制器LCOS_SLM
  10. 国家政策变更造成合同不能履行的,应当解除合同且当事人不承担违约责任