C语言项目-精忠报国-第二天-COORD windows.h头文件/conio.h getch()函数/game.c showMap()函数 文字突出/怪物计数与打印/随机攻击力 stblib.h

本文介绍了基于C语言的游戏项目《精忠报国之笑傲江湖》,涉及COORD结构体、getch()函数、showMap()函数、怪物计数与打印、随机攻击力的实现。项目主要使用windows.h头文件和conio.h的getch(),以及stblib.h的随机数生成。文章解释了COORD在控制台坐标系中的作用,getch()的无回显特性,以及showMap()如何突出文字显示。此外,还详细讲解了怪物计数和打印的逻辑,以及随机攻击力的生成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


项目来源:老九君

项目名称:精忠报国之笑傲江湖

视频课地址:网易云课堂

基本功能/架构:

在这里插入图片描述


第二天

  • 今天看得比较快,基本把这个项目结束了吧,明天再仔细看一下有没有遗漏的这项目就应该算是结束了.项目难度的话一般,主要是windows的函数调用以前不知道的话刚看可能会蒙头,同样需要源码的同学私聊或者评论我私发给你,因为这毕竟不是我写的,接下来后天开始应该会开始一个tinyhttp的github项目模仿,欢迎继续关注
  • 简易目录

    • 1.COORD windows.h头文件

    • 2.conio.h getch()函数

    • 3. game.c showMap()函数

    • 4.怪物计数与打印

    • 5.随机攻击力 stblib.h


1.COORD windows.h头文件

纵观项目,从player(玩家),monster(怪物),martial(门派)这几个关键结构体的定义和功能地图的切换的到怪物与地图的匹配(哪些怪物在哪些地图)还有地图描述信息的显示,全都使用了COORD结构,有关代码在后面
一开始看到这个地方特别疑惑,因为我在所有文件里都Ctrl F查询了,都没有找到COORD这样一个结构体的声明,最后才发现这是一个windows api里封装好的结构体,可以直接用,只有int x和int y两个成员,作用是表示一个字符在控制台屏幕上的坐标,其定义如下:

typedef struct _COORD {
   
SHORT X; // horizontal coordinate 水平坐标
SHORT Y; // vertical coordinate 竖直坐标
} COORD;

简单来说,COORD就像是给我们的控制台以左上角为(0,0)点建造了一个坐标系(只不过这个坐标系和平面直角坐标系的第四象限有点相似,但是又不同,Y也是向正方向增大的),例如我们在定义地图时某个地图坐标为(4,3),在后面要显示着地图相关信息的时候只要看怪物所在地图坐标横纵坐标是否与(4 , 3)一致即可.
注意:在项目中COORD并没有用来在屏幕上显示,更多的像是两个参数进行匹配,这不是c语言的标准库,不用太在意,会用就好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ztgWd7Z-1584329343723)(:/6a8b2891e9fe453aba0a6cf2b5881d3e)]

  • 结构体的定义
/* 门派 */
typedef struct _martial{
   
    int id;         //门派编号
	- - -
    COORD hqCoord;  //总部坐标(X-行,Y-列),与正常坐标轴相反
    - - -
}Martial;
/* 玩家结构 */
typedef struct _player{
   
    int id;
    - - -
    COORD currCoord;//玩家当前坐标(X-行,Y-列),与正常坐标轴相反
    Bag bag;
}Player;
/* 怪物 */
typedef struct _monster{
   
    int id;
	- - -
    COORD mCoord;   //怪物坐在地图坐标(X-行,Y-列),与正常坐标轴相反
}Monster;
  • 功能的实现
/* 显示怪物:怪物与地图的匹配 */
void ShowMonster()
{
   
	- - - 
    //遍历怪物数组,找到所有跟玩家坐标相同的怪物
    int monsterCount = sizeof(monsters)/ sizeof(Monster);
    int monsterIndex[9];//最多9个怪物
    int currCount = 0;//当前地图的怪物总数
    for(i = 0; i < monsterCount; i++)
    {
   
        if(X == monsters[i].mCoord.X && Y == monsters[i].mCoord.Y && monsters[i].state != 0)
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值