- BC20270041's blog
如何创建C++游戏?
- 2025-2-22 9:11:54 @
必备头文件
#include<bits/stdc++.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
#include<stdio.h>
创建Slowsay函数
目的:实现字符串缓慢输出
那个数字可以调整:把它改到1000就是一秒一个
void Slowsay(string a){
int l=a.size();
for(int i=0;i<l;i++){
cout<<a[i];
Sleep(10);
}
printf("\n");
}
调用
Slowsay("1111");
主函数中刷新窗口
最好用到while
while(1){
system("cls");
}
按下某个键
char tt;
while(tt!='y') tt=_getch();
颜色(要用到一个函数)
void Color(int a)
{
if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED);
if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE);
}
或者
#include <iostream>
#include <windows.h>
// Windows颜色常量
#define COLOR_RED FOREGROUND_RED | FOREGROUND_INTENSITY
#define COLOR_GREEN FOREGROUND_GREEN | FOREGROUND_INTENSITY
#define COLOR_BLUE FOREGROUND_BLUE | FOREGROUND_INTENSITY
#define COLOR_YELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
#define COLOR_RESET FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE
void setColor(WORD attr) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attr);
}
int main() {
setColor(COLOR_RED);
std::cout << "红色文本\n";
setColor(COLOR_GREEN);
std::cout << "绿色文本\n";
setColor(COLOR_YELLOW);
std::cout << "黄色文本\n";
setColor(COLOR_RESET);
return 0;
}
调用输出
for(int i=1;i<=10;i++)Color(i),cout<<"点赞"<<' ';
在特定位置输出
void SetPos(int x,int y)
{
COORD pos; pos.X=y,pos.Y=x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
x表示行数,y表示列数
SetPos(x,y);cout<<"mg";
在int main后加入这行代码可以让两次运行的随机数不同
srand(time(0));
在程序循环中实时判断按下某个键
#include <iostream>
#include <windows.h>
#define KEY_DOWN(vKey) ((GetAsyncKeyState(vKey) & 0x8000) ? 1 : 0)
int main() {
while (true) {
if (KEY_DOWN('W')) {
std::cout << "W key pressed" << std::endl;
}
Sleep(10);
}
return 0;
}