大一期末要交个C语言游戏+答辩,先来个小游戏练练手
一个简易的打字游戏,难得注释写的很全,就放上来了
有错欢迎指出,游戏有爱自取

C

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define MAXN 5//数组的大小
#define WIDTH 40//在[0,WIDTH]范围内生成字母
#define HIGH 20//垂直下降的高度
int grade,tier=1,hp=3;//分数,等级和生命值
int gameover=0;
struct ALPHA{int x;int y;char ch;int alive=0;  //用来记录该元素是否存在,和judge()函数一起理解}alpha[MAXN];
void HideCursor(void)//隐藏光标
{CONSOLE_CURSOR_INFO Cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&Cursor_info);
}
void gotoxy(int x,int y)
{HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos={x,y};SetConsoleCursorPosition(handle,pos);
}
void init(void)//隐藏指针和初始化随机数
{HideCursor();srand((unsigned)time(0));
}
void judge(void)//判断是否需要产生新的字母
{if(hp==0)//生命为0,游戏结束{gotoxy(0,HIGH+4);printf("gameover\n");system("pause");exit(0);}int i,count;    //count用来记录已经拥有的字母,游戏采取count==tierfor(i=0,count=0;i<MAXN;i++)if(alpha[i].alive)count++;while(count<tier)//保证同时在屏幕上出现的字母数等于难度{for(i=0;i<MAXN;i++){if(!alpha[i].alive){alpha[i].x=rand()%WIDTH;alpha[i].y=-1;alpha[i].ch=rand()%26+'A';alpha[i].alive=1;count++;break;}}}if(tier==1&&grade==5)//根据分数增加难度tier++;else if(tier==2&&grade==10)tier++;else if(tier==3&&grade==15)tier++;else if(tier==4&&grade==20)tier++;for(i=0;i<MAXN;i++)//如果字母落到底,清除这个字母,生命值减一if(alpha[i].alive)if(alpha[i].y==HIGH){hp--;alpha[i].alive=0;}
}
void show(void)//实现从上往下落字母的效果
{int i;switch(tier)//根据难度指定字母下落的速度{case 1:Sleep(500);break;case 2:Sleep(400);break;case 3:Sleep(300);break;case 4:Sleep(200);break;case 5:Sleep(100);break;}for(i=0;i<MAXN;i++)//打印字母{if(alpha[i].alive){if(alpha[i].y!=-1)//要保证gotoxy()的y为有效值{gotoxy(alpha[i].x,alpha[i].y);putchar(' ');}alpha[i].y++;gotoxy(alpha[i].x,alpha[i].y);putchar(alpha[i].ch);}}gotoxy(0,HIGH);for(int i=0;i<WIDTH;i++)//打印边界以及统计信息putchar('-');printf("\n等级:%d\n",tier);printf("分数:%d\n",grade);printf("生命值%d\n",hp);
}
void get_input(void)//读取玩家输入
{int i;char input;if(_kbhit()){input=_getch();input=_toupper(input);for(i=0;i<MAXN;i++)if(alpha[i].alive)if(alpha[i].ch==input){gotoxy(alpha[i].x,alpha[i].y);putchar(' ');alpha[i].alive=0;grade++;}}
}
void start(void)
{init();while(1){judge();show();get_input();}
}
int main(void)
{start();return 0;
}

一个及其简单的打字游戏相关推荐

  1. pygame做一个简单的打字游戏

    pygame做一个简单的打字游戏 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- import pygame from pygame ...

  2. 用java做一个简单的打字游戏

    Java也是可以做桌面程序的.只不过需要运行在装有JDK的电脑环境上,所以应用不是很广泛,但是用来提高自身的代码逻辑还是可以的!偶有一天看到金山的打字通,就想起何不做个简单的打字游戏用来练练手.于是就 ...

  3. pygame简单的俄罗斯方块游戏和简单的打字游戏

    1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...

  4. simple-type-game 简单的打字游戏

    前言 看了微软的一个课程 "Web Development for Beginners - A Curriculum" 中的一篇后,打算用 vue3.2 来重写,并小小的优化一下, ...

  5. 用Python做一个超简单的小游戏(一听就懂)

    前言 有的人可能学过一点Python基础,但不知道干什么好.今天就教大家做一个简单的小游戏 未经允许,禁止转载 文章目录 前言 写它会用到 源码先抛出来 知识讲解 random 介绍 语法 方法参数表 ...

  6. JavaScript实现简单的打字游戏

    完整项目下载:https://download.csdn.net/download/weixin_44893902/13131694 演示地址:https://url_777.gitee.io/typ ...

  7. java编写打字游戏_程序设计:简单字母打字游戏(JAVA编写)

    展开全部 /* 游戏开始,从天上62616964757a686964616fe78988e69d8331333262373266掉下10个有标号(字母)的炸弹, 下面有10颗子弹(就是可以按10个字母 ...

  8. 自己做的一个超级简单的小游戏

    自己做了一个简单的uniy3d小游戏 方向键控制一个小球躲避别的小球,撞到指定的墙胜利,被别的球撞到失败. 初学者练手 Player move Enemy move Islose_Trigger Sp ...

  9. 原生面向对象的简单金山打字游戏

    金山打字小游戏 1.介绍及效果图 这是一个练习打字的游戏,当游戏开始后,界面从顶部不断落下内容为随机字母的方块,当按下相对应的按键时,就会清除对应方块 2.思路 1.如何确定难度? 2.方块如何生成? ...

最新文章

  1. ECCV2020 最佳论文提名 | 流感知技术
  2. 强烈推荐!分享一个持续连载的《特征工程小锦囊》项目,代码已开源!
  3. win下打包成tar.gz
  4. java线程安全问题原因及解决办法
  5. 采访田飞师兄有感 ——by 李皈颖
  6. 架构设计基础:单服务.集群.分布式,基本区别和联系
  7. 2020 ACM Fellow放榜!陈怡然、颜水成、周昆等12名华人当选
  8. 计算机记录乐器声音的文件是,一、用计算机录音的过程.pptx
  9. js 怎样把定时器弄成同步的
  10. tcp 重发 应用层重传
  11. FastDFS入门一篇就够
  12. Android:实现弹窗效果
  13. MySQL函数大全及用法
  14. xshell 连接报错 Disconnected from remote host
  15. EXCEL表格单元格中有数字和文字怎么将数字部分提取出来
  16. 机器学习笔记-多分类学习,类别不平衡,决策树
  17. svg模糊图片局部清晰透视图
  18. VMware 17 Pro安装(升级)
  19. js中replace函数的使用
  20. JJJ:Makefile 添加

热门文章

  1. 内存地址、机器码与汇编指令的三角恋关系
  2. 记KBE多level使用
  3. Python爬虫-行行查
  4. mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...
  5. 【PHP】Phpstorm环境配置与应用
  6. 基于 SpringBoot实现文档管理编辑器
  7. 手机号码归属地 API 实现个性化推荐的思路分析
  8. 【Linux】Slurm作业调度系统使用
  9. 河道水文标尺监测系统 OpenCv
  10. Redis以及Redis的php扩展安装