猫史档案馆


【c++教程】只要会c++就能做出自己的游戏------1

用户:萌新大佬萌新大佬查看:3 回复:4 评论:3 创建时间:2022-02-27T16:30:26


首先说明一下,只有在windows系统下才可以!

第一课

#include<winsows.h>
#include<conio.h>

首先引入这两个头文件+万能。

让后教大家写2个必用函数

1.

void gotoxy(int x,int y){
	COORD pos={y,x};  
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

它可以让光标走向第x行y列。

原理:

WINBASEAPI WINBOOL WINAPI SetConsoleCursorPosition(HANDLE hConsoleOutput,COORD dwCursorPosition);

 

这是SetConsoleCursorPosition 原代码,第一个参数是哪个控制台(对的他还能控制其他控制台的光标),第二个是鼠标的位置。看一下COORD是什么:

typedef struct _COORD {
    SHORT X;
    SHORT Y;
  } COORD,*PCOORD;

实际上就是把xy封装到一个结构体里而已

STD_OUTPUT_HANDLE就是指我们运行后弹出的控制台啦。

至于含多人不能理解的HANDLE类型

typedef void *HANDLE;

哈哈它实际上欸喵oid(真不知道windows.h的编辑者怎么想的)

第二个函数

void hide(){
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_CURSOR_INFO CursorInfo; 
    GetConsoleCursorInfo(handle, &CursorInfo);
    CursorInfo.bVisible = false;
    SetConsoleCursorInfo(handle, &CursorInfo);
}

在main函数刚开始时运行,能使光标隐藏。

函数内第一行上个函数大家都看到了,那第二行的是啥意思呢?

  typedef struct _CONSOLE_CURSOR_INFO {
    DWORD dwSize;
    WINBOOL bVisible;
  } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;

只不过是吧光标的两个参数封装在了一起,而第二个就是是否隐藏,至于WINBOOL是啥

typedef int WINBOOL;

啊他实际上就是Int

至于神秘的DWORD

typedef unsigned __LONG32 DWORD;

你可以理解它就是个超大整型

好了这节课就这么愉快地结束了

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

小彩蛋:

windows.h里面有很多奇葩的事情让我无法理解,举个常见的例子:

typedef unsigned __LONG32 DWORD;
typedef DWORD *PDWORD;
typedef DWORD *LPDWORD;

就是一个非常离谱的大无用事件


回复

上一页1 页 / 共 1下一页
卑微OIer卑微OIer

讲的还好吧,system指令你应该讲讲

system('pause')什么的(以及shutdown \f)

点赞0


评论


雲雨轩雲雨轩

ddddd

点赞0


评论


Ezra__Ezra__

补充说明:万能头是

#include<bits/stdc++.h>

点赞0


评论


阳喰三理阳喰三理

#include<winsows.h>
#include<conio.h>

这俩是导入头文件,实质就是把winsows.h和conio.h里的代码复制粘贴到此文件里,这样我们能够使用里面的代码

void gotoxy(int x,int y){
	COORD pos={y,x};  
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

写一个无返回值的函数gotoxy,参数就是整型x,y

然后在里面写类型是COORD的对象pos的值为y,x(分别给结构体的两个成员变量赋值)

底下的函数可以自己查询,推测是设置控制台光标的位置

typedef struct _COORD {
    SHORT X;
    SHORT Y;
  } COORD,*PCOORD;

新建一个结构体,结构体就是一系列成员变量的集合,变量可以是任意类型。typedef是类型名称替换,替换struct _COORD的名称为COORD和*PCOORD

点赞0


评论