编程辅导简单教程
题单介绍
作者:包思远
## 前言
本教程偏向于实用型而不是学术型,因此教程里可能会有一些非学术性(/非专业)词语,只是为了更加生动形象的体现某个或某些知识点,请大家见谅。【注:本教程中用双“$”标出的文字或段落均为上文的注释】
编者著
2023年1月16日
## 第一章 C++部分
### 第一节 前言
本章将讲解关于C++编程的内容。C++编程目前可分为基础C++编程、游戏C++编程、网页C++编程,本章将详细讲解这些内容。
### 第二节 基础C++编程
基础C++编程知识大致就是我们在酷町堂学到的那些知识,他们比较简单,确实最最基础的东西,不学好他们,无法进行下面的“游戏C++编程”和“网页C++编程”。
由于基础C++编程知识繁多且简单,大家可以参照酷町堂和一些C++教程去学习。
推荐C++教程:https://www.runoob.com/cplusplus/cpp-tutorial.html
本节将不再讲述这一方面的内容。
### 第三节 游戏C++编程
游戏C++编程用的是基础C++编程的语法结构,但增加了许多函数,比如system函数(命令指示符函数)、Sleep函数(等待函数)等,本节将详细讲述这些内容。
#### 1.3.1 system函数(命令指示符函数)
system函数的原型为:
```cpp
int __cdecl system(const char *_Command);
```
需要process.h头文件,但是为了方便,推荐使用windoes.h头文件,该头文件同基础C++编程中的bits/stdc++.h类似,都是集合头文件,他的里面包含了许多游戏C++编程所需要的函数的所需头文件。
system函数的*_Command参数有很多选择,最常用的就是用来执行清屏命令的"cls"了。
用法:system("cls");
不过为了简便使用过程,可以自定义一个函数:
```cpp
void cls(){
system("cls");
}
```
这样使用时直接使用cls();就行。
#### 1.3.2 Sleep函数(等待函数)
Sleep函数的原型为:
```cpp
WINBASEAPI VOID WINAPI Sleep (DWORD dwMilliseconds);
```
需要synchapi.h头文件,同以前一样,使用windous.h头文件即可。
Sleep函数的参数dwMilliseconds可以想象成一个无符号整型的数,如果输入一个负数编译不会错,但运行时会无限等待。这个数的单位是毫秒,1000毫秒=1秒,即Sleep(1000);就是等待1秒。
同样的,我们可以简化一下:
```cpp
void sleep(int len){
Sleep(len);
}
```
这样直接使用sleep(len)就行。(len和dwMilliseconds一样,dwMilliseconds该填什么len就填什么)
通常清屏函数和等待函数是一起用的,故有:
```cpp
void cls(){
system("cls");
}
void sleep(int len){
Sleep(len);
}
void sleep_cls(int len){
sleep(len);
cls();
}
#define sc() sleep_cls()
```
直接使用sc(len)即可,len的意义和上面一样。
#### 1.3.3 颜色函数
颜色函数原型:
```cpp
WINBASEAPI WINBOOL WINAPI SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes);
```
需要wincon.h头文件,但还是照常使用windows.h头文件即可。
函数简化版:
有多种版本。
版本1: $注释:来自薛乘志$
```cpp
void color(int ForgC,int BackC){//前景色,背景色
WORD wColor=((BackC & OxOF)<<4)+(ForgC & OxOF);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), wColor);
}
```
版本2: $注释:来自沙宸安$
```cpp
void color(int corcorcor){
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), corcorcor);
}
```
版本3:
```cpp
void CLOUR(int p,int x){
//p=1 字体颜色
//p=2 背景颜色
//x=1 红色
//x=2 绿色
//x=3 蓝色
//x=4 黄色
//x=5 粉色
//x=6 青色
//x=7 白色
//x=8 原色(灰色)
if(p==1){
if(x==1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
if(x==2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(x==3)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(x==4)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(x==5)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(x==6)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(x==7)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(x==8)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
}
else if(p==2){
if(x==1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);
if(x==2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN);
if(x==3)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);
if(x==4)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);
if(x==5)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);
if(x==6)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(x==7)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(x==8)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY);
}
}
```
照常使用就行。(推荐版本1)
#### 1.3.4 其他函数
游戏C++编程当中还有许许多多的函数,他们的功能各有不同,在此就不一一赘述,想知道某个功能的函数可以百度一下。
#### 1.3.5 小节
本节讲了游戏C++编程当中最重要的三个函数:清屏函数、等待函数、颜色函数,还有众多的函数没有阐述,有需要的可以百度。下一节我们将讲述网页C++编程的相关内容。
### 1.4 网页C++编程(文本)
网页C++编程于我们来说,更准确来说就是酷町平台编程,因为我们常用的网页C++编程的编译器(/执行器/运行器)就是酷町平台的编译器(/执行器/运行器)。网页C++编程和游戏C++编程80%的情况都是一样的,不一样的地方在于一些函数的名称不一样、用法不一样以及多了一个重要的功能,这个功能我们不久就要讲述他。本节只讲述网页C++编程中文本编程的相关内容。
#### 1.4.1 网页C++编程与游戏C++编程不同之处1--函数名称、用法的区别
可以参考酷町平台的官方文档:https://kuding1024.com/#/doc?id=21
https://kuding1024.com/#/doc?id=6
再此不一一讲述了。
#### 1.4.2 网页C++编程与游戏C++编程不同之处2--重要功能函数--emscripten_run_script
emscripten_run_script函数是网页C++编程与游戏C++编程最大的不同之处,这个函数能在网页里运行JS代码,又因为JS代码和HTML代码是能够互相使用的,在JS里能使用HTML,在HTML里能使用JS,所以现在HTML也能用了,进而就可以利用网页C++编程来编写网页。
可以参考https://wenda.codingtang.com/questions/22384/ 里给出的酷町堂头文件PLUS代码及例子,也可以查看https://www.luogu.com.cn/paste/sm16buie 或 https://github.com/BaoSiYuanCODE/Bao-Siyuan-s-Personal-Works/blob/main/酷町堂头文件PLUS.cpp 直接复制使用酷町堂头文件PLUS的代码。
下面先介绍一下emscripten_run_script系列函数。
1、emscripten_run_script函数的原型为:
```cpp
void emscripten_run_script(const char *script);
```
意思非常简单,就是运行代码为script的JS代码。参数script为包含JS语句的字符串。该函数无返回值。
2、emscripten_run_script_int函数原型为:
```cpp
int emscripten_run_script_int(const char *script);
```
该函数除了返回值为int类型外,其余用法均和emscripten_run_script函数一样。
3、emscripten_run_script_string函数原型为:
```cpp
char *emscripten_run_script_string(const char *script);
```
该函数除了返回值为string类型外,其余用法均和emscripten_run_script函数、emscripten_run_script_int函数一样。
$注释:
参考文档: http://codingsky.com/b/767368973/4111944330.html
$
#### 1.4.3 小节
本节讲述了和网页C++编程相关的内容,至此本教程第一章C++部分已全部讲完,接下来将进入第二章,讲述HTML相关的内容。
## 第二章 HTML部分
html语言是编写网站时的重要语言,由于内容过多,本章不详细讲述,给个参考教程:
https://www.runoob.com/html/html-tutorial.html
## 第三章 javascript部分
javascript语言简称js语言,和html一样,也是编写网站时的重要语言,本章同样不详细讲述,给个参考教程:
https://www.runoob.com/js/js-tutorial.html
## 第四章 CSS部分
css语言是编写网站时的辅助语言,但也很重要,同样的,给个参考教程:
https://www.runoob.com/css/css-tutorial.html