资深光能
酷町堂编程平台今日上线,童鞋们可以使用酷町堂账户登录。登录网址为: https://dev.codingtang.com
完成代码编写以后,可以直接复制分享网址到酷町问答,即可在问答里打开,如下:
https://dev.codingtang.com/#/share?uuid=7b13304e93c047b09138134770bb6514
岳要举在2021-05-27 09:36:51追加了内容
编程平台不支持windows.h,大家可以先看下入门教程:
新手启示者
https://dev.codingtang.com/#/gameListAll?type=1
https://dev.codingtang.com/#/share?uuid=c8aba8872f4342cc87454315c7ba7365
https://dev.codingtang.com/#/share?uuid=180f7bae29764c2b80b022e4441151fa
https://dev.codingtang.com/#/share?uuid=5169363c63e04ff0b7a9051f8c424f87
https://dev.codingtang.com/#/share?uuid=6ebc385a1c994f67b253fa2adfda3297
https://dev.codingtang.com/#/share?uuid=8ad263f23a2441e8b61cc16537ff11ea
https://dev.codingtang.com/#/share?uuid=be5e3322bded49a7aa632265f34a4710
包思远在2021-06-08 20:08:25追加了内容
https://dev.codingtang.com/#/share?uuid=48e64bb1cacf4981999855fbbc5ad592
求赞!!
中级天翼
dev c++编译结果
这是酷町堂的编译结果
请问,为什么DEV C++可以编译通过,而酷町堂不行?
就是这个代码:
/*
由于文件较大,编译和运行时间可能较长,请耐心等待!
■
□
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色;
6=黄色,7=白色,8=灰色,9=淡蓝色,A=淡绿色,B=浅绿色;
C=淡红色,D=淡紫色,E=淡黄色,F=亮白色。
VK_LBUTTON 鼠标左键 0x01
VK_RBUTTON 鼠标右键 0x02
VK_CANCEL Ctrl + Break 0x03
VK_MBUTTON 鼠标中键 0x04
VK_BACK Backspace 键 0x08
VK_TAB Tab 键 0x09
VK_RETURN 回车键 0x0D
VK_SHIFT Shift 键 0x10
VK_CONTROL Ctrl 键 0x11
VK_MENU Alt 键 0x12
VK_PAUSE Pause 键 0x13
VK_CAPITAL Caps Lock 键 0x14
VK_ESCAPE Esc 键 0x1B
VK_SPACE 空格键 0x20
VK_PRIOR Page Up 键 0x21
VK_NEXT Page Down 键 0x22
VK_END End 键 0x23
VK_HOME Home 键 0x24
VK_LEFT 左箭头键 0x25
VK_UP 上箭头键 0x26
VK_RIGHT 右箭头键 0x27
VK_DOWN 下箭头键 0x28
VK_SNAPSHOT Print Screen 键 0x2C
VK_Insert Insert 键 0x2D
VK_Delete Delete 键 0x2E
'0' – '9' 数字 0 - 9 0x30 - 0x39
'A' – 'Z' 字母 A - Z 0x41 - 0x5A
VK_LWIN 左WinKey(104键盘才有) 0x5B
VK_RWIN 右WinKey(104键盘才有) 0x5C
VK_APPS AppsKey(104键盘才有) 0x5D
VK_NUMPAD0 小键盘 0 键 0x60
VK_NUMPAD1 小键盘 1 键 0x61
VK_NUMPAD2 小键盘 2 键 0x62
VK_NUMPAD3 小键盘 3 键 0x63
VK_NUMPAD4 小键盘 4 键 0x64
VK_NUMPAD5 小键盘 5 键 0x65
VK_NUMPAD6 小键盘 6 键 0x66
VK_NUMPAD7 小键盘 7 键 0x67
VK_NUMPAD8 小键盘 8 键 0x68
VK_NUMPAD9 小键盘 9 键 0x69
VK_F1 - VK_F24 功能键F1 – F24 0x70 - 0x87
VK_NUMLOCK Num Lock 键 0x90
VK_SCROLL Scroll Lock 键 0x91
#include <iostream>
#include "windows.h"
using namespace std;
int main()
{
cout << "原色testCOLOR(没有设置字体颜色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
FOREGROUND_GREEN | FOREGROUND_BLUE);//设置三色相加
cout << "白色testCOLOR(红色绿色蓝色相加)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
//设置红色
cout << "红色testCOLOR(设置的颜色为红色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN)
;//设置绿色
cout << "绿色testCOLOR(设置的颜色为绿色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
//设置蓝色
cout << "蓝色testCOLOR(设置的颜色为蓝色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
FOREGROUND_GREEN);//设置红色和绿色相加
cout << "黄色testCOLOR(红色和绿色相加色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
FOREGROUND_BLUE);//设置红色和蓝色相加
cout << "粉色testCOLOR(红色和蓝色相加色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |
FOREGROUND_BLUE);//设置绿色和蓝色相加
cout << "青色testCOLOR(绿色和蓝色相加色)" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
//设置颜色,没有添加颜色,故为原色
cout << endl;
system("pause");
return 0;
}
*/
#include<bits/stdc++.h>
#include<time.h>
#include<windows.h>
#include<conio.h>
#include<cstdio>
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)
#define get(VK_NONAME) (GetAsyncKeyState(VK_NONAME))
#define clean (system("cls"))
#define sl(x) (Sleep(x))
//格式1:上次游玩得分 最高得分
//格式2: 上次日期(年月日) 上次游玩累计时间(分钟) {以后建}
//地图 :7*100 0:空 1,正常方块
//△:你
//×:危险方块
using namespace std;
int kais,zg,chose;
HWND hwnd=GetForegroundWindow();
int zgt;
int x,y,er=-5,jl,erc,jlc;
int df;
int dt[7][100]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1},
{0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1},
{1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
};
void rechange(){//正在编写中。。。
time_t timep;
time(&timep);
char tmp[64];
strftime(tmp, sizeof(tmp), "%Y-%m-%d",localtime(&timep) );
}
void cls(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = { 0, 0 };
SetConsoleCursorPosition( hConsole, coordScreen );
}
void HideCursor(){
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);
CursorInfo.bVisible = false;
SetConsoleCursorInfo(handle, &CursorInfo);
}
void out(string s){
for(int i=0;i<s.size();i++){
cout<<s[i];
Sleep(40);
}
cout<<"\n";
}
void quicklyout(string s){
for(int i=0;i<s.size();i++){
cout<<s[i];
Sleep(20);
}
cout<<"\n";
}
void getz(){
while(1){
if(get(0x5A)){
clean;
break;
}
}
}
void goin(){
system("mode con cols=50 lines=10");
out("一觉醒来,你竟发现\n你来到了二维世界!\n\n按Z继续\n");
getz();
out("你正准备好好看看二维世界时,\n三维空间忽然坍塌向二维空间坍塌了!\n于是......\n你开始了逃亡......\n\n按Z继续\n");
getz();
}
int change(string s){
int f=1,idx=0;
for(int i=s.size()-1;i>=0;i--){
idx+=(s[i]-'0')*f;
f*=10;
}
return idx;
}
void getkz(){//摘自luckyone906的博客
ifstream fin("1.txt");
fin>>y>>x>>er>>zg;
fin.close();
if(y==0&&x==0&&er==0&&zg==0){
er=-5;
x=4;
y=0;
}
}
void prin(){
cls();
cout<<" 得分"<<left << setw(6) << zgt<<"\n";
for(int i=0;i<=6;i++){
for(int j=y-5;j<=-1;j++){
if(j<=er){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
cout<<"×";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout<<"■";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
}
for(int j=max(0,y-5);j<=min(99,y+5);j++){
if(j<=er){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
cout<<"×";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if(x==i&&y==j){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"△";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if(dt[i][j]==0)cout<<"□";
else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout<<"■";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
}
cout<<"\n";
}
}
void shiyong(){
out("操作须知:\n按A/D左右选择,按Z确认选择。\n按X结束游戏。\n按左箭头键/右箭头键左右移动,按上箭头键跳跃。\n△:你 ×:危险方块 ■普通方块\n\n按Z继续\n");
getz();
}
void mainchose(){
zg=max(zg,zgt);
chose=1;
int tf=1;
while(1){
if(get(0x5A))break;
bool f=0;
if(tf==1){
tf=0;
f=1;
}
if(get(0x41)){
if(chose==2){
chose=1;
f=1;
}
}
if(get(0x44)){
if(chose==1){
chose=2;
f=1;
}
}
if(f==1&&chose==1){
clean;
cout<<"---------------------------------\n"
<<"| 最高分:"<< left << setw(6) << zg<<" |\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"------------------";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"---------------\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"| 继续上次游戏 |";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<" 新 游 戏 |\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"------------------";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"---------------\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout<<" 逃离";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"贡献榜:\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |FOREGROUND_BLUE);
cout<<" 吴庞茂旭 吕若朴";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
if(f==1&&chose==2){
clean;
cout<<"---------------------------------\n"
<<"| 最高分:"<< left << setw(6) << zg<<" |\n";
cout<<"-----------------";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"----------------\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"| 继续上次游戏 ";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"| 新 游 戏 |\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"-----------------";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<"----------------\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout<<" 逃离";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<"贡献榜:\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |FOREGROUND_BLUE);
cout<<"吴庞茂旭 吕若朴";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
sl(10);
}
}
int choseagain(){
int chosea=1,tf=1;
while(1){
if(get(0x5A))break;
bool f=0;
if(tf==1){
tf=0;
f=1;
}
if(get(0x41)){
if(chosea==2){
chosea=1;
f=1;
}
}
if(get(0x44)){
if(chosea==1){
chosea=2;
f=1;
}
}
if(f==1&&chosea==1){
clean;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<" yes ";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<" no";
}
if(f==1&&chosea==2){
clean;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
cout<<" yes ";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout<<" no";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
sl(10);
}
return chosea;
}
void goout(int x){
if(x==1){//摘自 浅浅的 的微博
ofstream fout("1.txt");
fout<<0<<" "<<4<<" "<<-5<<" "<<max(zg,zgt);
/*fout << flush;*/
fout.close();
}
else{
freopen("1.txt","w",stdout);
cout<<y<<" "<<x<<" "<<er<<" "<<max(zg,zgt);
fclose(stdout);
}
}
void Main1(){
/*cout<<"---------------------------------\n"
<<"| 最高分:"<< left << setw(6) << zg<<" |\n"
<<"---------------------------------\n"
<<"| 继续上次游戏 | 新 游 戏 |\n"
<<"---------------------------------\n";*/
getkz();
sl(1000);
erc=0;
jlc=0;
mainchose();
if(chose==2){
er=-5;
x=4;
y=0;
}
clean;
zgt=0;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
out(" 3");
sl(1000);
clean;
out(" 2");
sl(1000);
clean;
out(" 1");
sl(1000);
clean;
out(" 开始!");
sl(500);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
int yf;
int tget=0;
prin();
while(1){
if(tget==3)tget=0;
zgt=max(zgt,y);
df=y;
if(get('X')){
yf=2;
break;
}
if(y<=er){
yf=0;
break;
}
erc++;
if(dt[x+1][y]==0)jlc++;
if(erc==10){
er++;
erc=1;
prin();
}
if(y==98&&x==4){
yf=1;
break;
}
if(x==6){
x++;
sl(100);
prin();
sl(100);
clean;
yf=-1;
break;
}
if(dt[x+1][y]==0&&jlc==4){
x++;
jlc=0;
prin();
}
if(get(0x25)&&dt[x][y-1]==0&&tget==2){
y--;
prin();
}
if(dt[x+1][y]==1&&get(0x26)&&tget==2){
int jian;
for(jian=1;jian<=6-x;jian++){
if(dt[x-jian][y]==1){
jian--;
break;
}
}
x-=jian;
x=max(x,0);
prin();
}
if(get(0x27)&&dt[x][y+1]==0&&tget==2){
y++;
prin();
}
sl(50);
tget++;
/*VK_LEFT 左箭头键 0x25
VK_UP 上箭头键 0x26
VK_RIGHT 右箭头键 0x27
VK_DOWN 下箭头键 0x28*/
}
if(yf==-1){
out("你掉入了虚空......");
sl(1000);
goout(1);
clean;
out("要再来一次吗?");
if(choseagain()==1){
sl(500);
Main1();
}
else{
clean;
cout<<"再会!";
sl(500);
ShowWindow(hwnd,0);
return ;
}
}
else if(yf==0){
clean;
out("你被三维化了......") ;
goout(1);
sl(1000);
clean;
out("要再来一次吗?");
if(choseagain()==1){
sl(500);
Main1();
}
else{
clean;
cout<<"再会!";
sl(500);
ShowWindow(hwnd,0);
return ;
}
}
else if(yf==1){
sl(500);
clean;
out("不知怎么了,你就来到了宇宙的边缘\n忽然,你看到了一条裂缝......\n\n (未完待续)");
goout(1);
}
else{
goout(2);
ShowWindow(hwnd,0);
}
}
int main(){
HideCursor();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
goin();
shiyong();
sl(500);
Main1();
return 0;
}
谢谢!
中级天翼
天哪,天哪!
编程平台竟然不允许用头文件#include<conio.h>!!!
(吃惊。。。)这。。。
我的游戏就都不能用了!(额)
而且#include<codingtang.h>也不包括#include<conio.h>
@岳要举 这个问题要解决一下
(小疑惑)老师们编游戏不用#include<conio.h>吗?
新手光能
目前的问题:
1.不能使用cin,cout好像只有getInt()
2.头文件只有#include "codingtang.h"
3.Sleep()变为sleep();
4.头文件不支持#include<windows.h>
酷町堂新出的东东有利有弊,等完善好后只用(程序猿加油吧!)
可以去参考老师们的代码
顶
中级光能
这个软件好多头文件不能用啊
这windows.h和万能头(bits/stdc++.h)直接报错
我好无语啊
一些函数我都不知道头文件怎么写,都是靠万能头的。。。
这个优化一下呀
中级光能
键盘处理器没了,这个SetPos也没有了,Sleep说好替换成sleep加头文件的怎么还报错,上传好麻烦。。。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)//判断键盘是否按下函数定义
using namespace std;
struct player {//玩家结构体(以后可能会有多个玩家,所以定义成这样)
int x,y,life,rem;//每个玩家的坐标,生命,子弹剩余
}soldier;//玩家
struct bullet {//子弹结构体
int x,y,di;//子弹的当前坐标和子弹方向
}fbullet[100000];//子弹数组
int bucount=1;//子弹数量
int cnt;//得分
int ensleep;//控制敌人的移动速度
int Changesleep;//控制换弹时间
int clip;//弹夹中剩余的子弹
bool fclip;//标记弹夹是否为空(1为空,0为不空)
bool fc;//判断弹夹是否填充
struct en {//敌人结构体
int x,y;//敌人的坐标
}fen[40];//一共20*20,设置了30个敌人
char Map[200][200];//地图
bool f=false;
void out(string a) {//延时输出(暂时没有用到,以后写介绍会有
for (int i=0;i<a.size();i++) {
cout<<a[i];
sleep(50);
}
}
void color(int a) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void SetPos(COORD a)
{
HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out, a);
}
void SetPos(int i, int j)
{
COORD pos={i, j};
SetPos(pos);
}
void init() {//地图初始化函数
memset(Map,' ',sizeof(Map));//将地图初始化为空格更容易看见玩家和敌人
}
void in_con() {
color(7);
system("cls");
out("本游戏控制主要分为两块\n");
cout<<" ";
out("1、玩家人物控制\n");
cout<<" ";
out("玩家在游戏中字符表示为1,通过w(上)s(下)a(左)d(右)控制1上下左右移动\n");
cout<<" ";
out("2、发射子弹控制\n");
cout<<" ";
out("本游戏接近于射击游戏,所以你可以在游戏中发射子弹,通过i(上)k(下)l(右)j(左)控制子弹发射方向\n");
out("按s召唤商店来购买东西");
out("如果中途你想要暂停游戏,您可以按下x键,此时不可以召唤商店\n");
out("如果你没有看介绍或者对介绍不熟悉,请按下Esc退出到主界面\n");
out("一发弹夹为100发子弹,子弹耗尽时会自动换弹,如果中途想要换弹请按r\n");
out("按下k跳出本轮介绍");
while (!KEY_DOWN('K'));
}
void in_cont() {
color(7);
system("cls");
out("本游戏为射击游戏,所以游戏主要分为3个部分\n");
out("开始后你可能会看见:\n");
init();
Map[9][9]='1';
for (int i=1;i<=8;i++) Map[i][9]='0';
for (int i=1;i<=9;i++) Map[rand()%19][rand()%19]='U';
cout<<"╭═══════════════════╮\n";//输出游戏边界
for (int i=1;i<=20;i++) {
cout<<"║";//输出边界
for (int j=1;j<20;j++) {
if (Map[i][j]=='U') color(64);//将敌人设成红色
if (Map[i][j]=='1') color(2);//将本人设置绿色
if (Map[i][j]=='0') color(14);//将子弹设置成黄色
cout<<Map[i][j];
color(7);//恢复
}//输出地图(由于子弹遇到边界目前会卡在边界上,所以少输出头尾
cout<<"║";//输出边界
if (i==1) printf("剩余生命:%-2d ║\n",soldier.life);
else if (i==2) cout<<"得分 :"<<setw(8)<<cnt<<"分 ║"<<endl;
else if (i==3) cout<<setw(3)<<clip<<setw(6)<<"/"<<setw(5)<<soldier.rem<<" ║"<<endl;
else if (i==4&&fclip&&soldier.rem!=0) cout<<" 换弹中... ║"<<endl;
else if (i==6&&soldier.rem==0) cout<<" 子弹耗尽! ║"<<endl;
else if (i==7&&soldier.rem==0) cout<<"请尽快到商城购买!║"<<endl;
else cout<<" ║"<<endl;
}
cout<<"╰═══════════════════╯\n";//输出游戏边界
out("左边单独框出来的是游戏地图,地图上有3种符号,1,u,0\n");
out("其中1代表玩家,0代表子弹,u代表敌人,具体如何操作,请看操作介绍\n");
out("你的目标就是控制1打u获得得分\n");
out("游戏中会有子弹限制,初始会给出1000发子弹,游戏中会有商城设置,目前里面可以购买生命和子弹,以积分作为货币,避免子弹不够的情况\n");
out("按下k跳出本轮介绍");
while (!KEY_DOWN('K'));
}
void update() {
system("cls");
cout<<"1.0~1.1 更新了游戏介绍,但是非常简洁,比较普通\n";
cout<<"1.1~1.2 更新游戏介绍内容和界面(当前版本未发布)\n";
cout<<"1.2~1.3 更新了游戏界面太卡顿以至于看不清的情况,和弹夹内子弹为负数的情况bug\n";
color(14);cout<<"1.3~1.4 作者发布以后立即发现了几个bug,不稳定程序问题解决,修复部分bug(本次更新)\n";color(7);
cout<<"按下k继续";
while (!KEY_DOWN('K'));
}
void careful() {
system("cls");
out("游戏中现在存在少量bug,发现请与作者联系\n");
out("祝您玩的愉快\n");
out("按下k继续");
while (!KEY_DOWN('K'));
}
void introduce() {
color(7);
sleep(500);
bool f=0;
int i=1;
while (true) {
system("cls");
printf("游戏名字:枪林弹雨(作者还没想好,暂时就这个难听的吧)\n");
printf("作者:Jack Sparrow(QQ:2256449902)\n");
printf("游戏版本:1.4(第四个版本)\n");
printf("界面操作:w上调,s下调,黄色代表当前选中,z确定进入\n");
cout<<"╭══════╮\n";
cout<<"║";
if (i==1) {
color(14);
if (KEY_DOWN('Z')) in_con();
}cout<<" 控制介绍 ";color(7);
cout<<"║\n";
cout<<"║";
if (i==2) {
color(14);
if (KEY_DOWN('Z')) in_cont();
}cout<<" 内容介绍 ";color(7);
cout<<"║\n║";
if (i==3) {
color(14);
if (KEY_DOWN('Z')) return ;
}cout<<" 跳出介绍 ";color(7);
cout<<"║\n";
cout<<"╰══════╯\n";
if (KEY_DOWN('W')&&i-1!=0) i--;
if (KEY_DOWN('S')&&i+1<=3) i++;
sleep(100);
// out("您对游戏的那些部分需要查看介绍:\n");
// out("1、控制介绍(按下u)\n");
// out("2、内容介绍(按下i)\n");
// out("按下Z开始游戏");
}
}
void Opening() {
int i=1;
while (true) {
system("cls");
printf("游戏名字:枪林弹雨(作者还没想好,暂时就这个难听的吧)\n");
printf("作者:Jack Sparrow(QQ:2256449902)\n");
printf("游戏版本:1.4(第四个版本)\n");
printf("界面操作:w上调,s下调,黄色代表当前选中,z确定进入\n");
printf("╭══════╮\n");
printf("║");
if (i==1) {
color(14);
if (KEY_DOWN('Z')&&!f) {
if (KEY_DOWN('Z')) {
for (int i=3;i>=1;i--) {
system("cls");
color(rand()%14);
cout<<i;
sleep(1000);
}
color(rand()%14);
system("cls");
cout<<"开始!";
sleep(1000);
return ;
}
}
if (KEY_DOWN('Z')&&f) {
color(7);
int j=0;
system("cls");
sleep(500);
while (true) {
system("cls");
printf("游戏名字:枪林弹雨(作者还没想好,暂时就这个难听的吧)\n");
printf("作者:Jack Sparrow(QQ:2256449902)\n");
printf("游戏版本:1.4(第四个版本)\n");
printf("界面操作:w上调,s下调,黄色代表当前选中,z确定进入\n");
printf("╭═══════╮\n");
printf("║");
if (!j) {
color(14);
if (KEY_DOWN('Z')) {
for (int i=3;i>=1;i--) {
system("cls");
color(rand()%14);
cout<<i;
sleep(1000);
}
color(rand()%14);
system("cls");
cout<<"开始!";
sleep(1000);
return ;
}
}printf(" 继续上次游戏 ");color(7);
printf("║\n║");
if (j==1) {
color(14);
if (KEY_DOWN('Z')) {
soldier.x=9,soldier.y=9,soldier.life=9,soldier.rem=1000;//玩家初始坐标,生命,子弹数量
clip=100;
Changesleep=10;
for (int i=1;i<=bucount;i++)
fbullet[i].x=0,fbullet[i].y=0,fbullet[i].di=0;
bucount=1;
for (int i=1;i<=29;i++) {//生成第一波敌人(目前只是会从上面生成,以后会从四面生成
fen[i].x=0;
fen[i].y=rand()%19;
}
cnt=0;
init();
for (int i=3;i>=1;i--) {
system("cls");
color(rand()%14);
cout<<i;
sleep(1000);
}
color(rand()%14);
system("cls");
cout<<"开始!";
sleep(1000);
return ;
}
}printf(" 新游戏 ");color(7);
printf("║\n║");
if (j==2){
color(14);
if (KEY_DOWN('Z')) break;
}
printf(" 退出 ");color(7);
printf("║\n");
printf("╰═══════╯\n");
if (KEY_DOWN('W')&&j-1>=0) j--;
if (KEY_DOWN('S')&&j+1<=2) j++;
sleep(100);
}
}
}printf(" 开始游戏 ");color(7);
printf("║\n");
printf("║");
if (i==2) {
color(14);
if (KEY_DOWN('Z')) introduce();
}printf(" 查看介绍 ");color(7);
printf("║\n");
printf("║");
if (i==3) {
if (KEY_DOWN('Z')) update();
color(14);
}printf(" 更新内容 ");color(7);
printf("║\n║");
if (i==4) {
if (KEY_DOWN('Z')) careful();
color(14);
}printf(" 注意事项 ");color(7);
printf("║\n");
printf("╰══════╯");
if (KEY_DOWN('W')&&i-1!=0) i--;
if (KEY_DOWN('S')&&i+1<=4) i++;
sleep(100);
}
}
void control() {//控制函数
if (KEY_DOWN('W')&&soldier.x-1>=1) soldier.x--;
if (KEY_DOWN('S')&&soldier.x+1<=20) soldier.x++;
if (KEY_DOWN('A')&&soldier.y-1>=1) soldier.y--;
if (KEY_DOWN('D')&&soldier.y+1<20) soldier.y++;
}
void fire() {//发射子弹函数
int buco=0;
if (KEY_DOWN('K')) {
while (fbullet[++buco].di!=0);//重复利用数组,以下同理
if (buco>=bucount) bucount++;
fbullet[buco].di=1;
clip--;
}
if (KEY_DOWN('J')) {
while (fbullet[++buco].di!=0);
if (buco>=bucount) bucount++;
fbullet[bucount].di=2;
clip--;
}
if (KEY_DOWN('L')) {
while (fbullet[++buco].di!=0);
if (buco>=bucount) bucount++;
fbullet[bucount].di=3;
clip--;
}
if (KEY_DOWN('I')) {
while (fbullet[++buco].di!=0);
if (buco>=bucount) bucount++;
fbullet[buco].di=4;
clip--;
}
fbullet[buco].x=soldier.x;
fbullet[buco].y=soldier.y;
}
void en_move() {//敌人移动函数
if (ensleep==2) {//控制敌人移动速度
for (int i=1;i<=29;i++) {
if (fen[i].x+1<=21)//如果下一步未出界,那么移动
fen[i].x++;
if (Map[fen[i].x][fen[i].y]=='1') {//如果敌人碰到玩家
soldier.life--;
if (soldier.life==0) {
system("cls");
out("Game Over!");
sleep(1000);
system("cls");
out("你目前的得分为:");
cout<<cnt;
out("分");
system("cls");
out("是否重新开始游戏?\nYes(y)No(n)");
while (true) {
if (KEY_DOWN('N')) exit(0);
if (KEY_DOWN('Y')) {
cnt=0;
soldier.x=9,soldier.y=9;//玩家初始坐标
for (int i=1;i<=9;i++) {//生成第一波敌人(目前只是会从上面生成,以后会从四面生成
fen[i].x=0;
fen[i].y=rand()%19;
}
bucount=0;
break;
}
}
}
}
if (fen[i].x==21) {//如果到界限,那么重新生成
fen[i].x=0;
fen[i].y=rand()%19;
}
}
ensleep=0;
}
}
void hit(int x,int y,int k) {
if (Map[x][y]=='U') {//如果当前子弹击中敌人
cnt++;//得分累加
for (int j=1;j<=29;j++) {//查出是哪一个敌人被击中
if (fen[j].x==x&&fen[j].y==y) {//找到当前敌人并重新生成
fen[j].x=0;
fen[j].y=rand()%19;
break;
}
}
fbullet[k].x=0;//将子弹放在0,0处(此处不会输出)
fbullet[k].y=0;
fbullet[k].di=0;//以后方便重复利用数组
}
}
void bullet_move() {//子弹移动函数
for (int i=1;i<=bucount;i++) {//遍历每一个子弹
hit(fbullet[i].x,fbullet[i].y,i);
if (fbullet[i].di==1&&fbullet[i].x+1<=21) fbullet[i].x++;
if (fbullet[i].di==2&&fbullet[i].y-1>=0) fbullet[i].y--;
if (fbullet[i].di==3&&fbullet[i].y+1<=21) fbullet[i].y++;
if (fbullet[i].di==4&&fbullet[i].x-1>=0) fbullet[i].x--;
if (fbullet[i].x==21||fbullet[i].y==0||fbullet[i].y==21||fbullet[i].x==0)
fbullet[i].di=0;
hit(fbullet[i].x,fbullet[i].y,i);
}
}
void shop() {
int i=1;
while (true) {
system("cls");
printf("游戏名字:枪林弹雨(作者还没想好,暂时就这个难听的吧)\n");
printf("作者:Jack Sparrow(QQ:2256449902)\n");
printf("游戏版本:1.4(第四个版本)\n");
printf("界面操作:w上调,s下调,黄色代表当前选中,z确定进入\n");
color(14);
cout<<"================================================\n";
color(7);
cout<<"欢迎来到商店,您可以买如下物品:\n";
cout<<"╭════════════╮\n║";
if (i==1) {
if (KEY_DOWN('Z')) {
if (cnt<100) {
system("cls");
cout<<"积分不够!\n";
}
if (cnt>=100) {
system("cls");
cnt-=100;
soldier.life++;
soldier.life%=10;
cout<<"购买成功!\n";
cout<<"您现在有"<<soldier.life<<"条生命\n";
cout<<"您还有"<<cnt<<"分\n";
}
out("按下k继续");
while (!KEY_DOWN('K'));
system("cls");
}
color(14);
}cout<<" 一条命(售价100分) ";color(7);
cout<<"║\n║";
if (i==2) {
if (KEY_DOWN('Z')) {
if (cnt<10) {
system("cls");
cout<<"积分不够!\n";
}
if (cnt>=10) {
system("cls");
cnt-=10;
soldier.rem+=700;
cout<<"购买成功!\n";
cout<<"您现在有"<<soldier.rem<<"发子弹\n";
cout<<"您还有"<<cnt<<"分\n";
}
out("按下k继续");
while (!KEY_DOWN('K'));
system("cls");
}
color(14);
}cout<<" 700发子弹(售价10分) ";color(7);
cout<<"║\n║";
if (i==3) {
if (KEY_DOWN('Z')) return ;
color(14);
}cout<<" 退出商店 ";color(7);
cout<<"║\n";
cout<<"╰════════════╯\n";
if (KEY_DOWN('W')&&i-1!=0) i--;
if (KEY_DOWN('S')&&i+1<=3) i++;
sleep(100);
}
}
int main () {
soldier.x=9,soldier.y=9,soldier.life=9,soldier.rem=1000;//玩家初始坐标,生命,子弹数量
clip=100;
Changesleep=10;
for (int i=1;i<=9;i++) {//生成第一波敌人(目前只是会从上面生成,以后会从四面生成
fen[i].x=0;
fen[i].y=rand()%19;
}
Opening();
color(7);
while (true) {
f=true;
if (KEY_DOWN(VK_ESCAPE))
Opening();
ensleep++;//控制时间
if (KEY_DOWN('X')) {
SetPos(26,6);
cout<<"暂停中!";
sleep(1000);
while (!KEY_DOWN('X'));
sleep(100);
}
system("cls");//清屏使其动态
if (KEY_DOWN('P')) shop();
init();
control();
if (KEY_DOWN('R')) {
if (soldier.rem>=100-clip) {
soldier.rem-=(100-clip);
clip=100;
}
else {
clip+=soldier.rem;
soldier.rem=0;
}
fclip=1;
Changesleep=0;
}
if (Changesleep==10) {
if (fc==0) {
clip=100;
if (soldier.rem>=100) soldier.rem-=100;
else clip=soldier.rem,soldier.rem=0;
fc=1;
}
fclip=0;
if (clip!=0) fire();
}
if (clip==0&&fclip==0) Changesleep=0,fclip=1,fc=0;
if (fclip) Changesleep++;
Map[soldier.x][soldier.y]='1';//将玩家生成在屏幕上
en_move();
for (int i=1;i<=29;i++)//将敌人生成在屏幕上(后面子弹判断需要)
Map[fen[i].x][fen[i].y]='U';
bullet_move();
for (int i=1;i<=bucount;i++)//将子弹生成在屏幕上
Map[fbullet[i].x][fbullet[i].y]='0';
Map[soldier.x][soldier.y]='1';//将玩家生成在屏幕上
cout<<"╭═══════════════════╮\n";//输出游戏边界
for (int i=1;i<=20;i++) {
cout<<"║";//输出边界
for (int j=1;j<20;j++) {
if (Map[i][j]=='U') color(64);//将敌人设成红色
if (Map[i][j]=='1') color(2);//将本人设置绿色
if (Map[i][j]=='0') color(14);//将子弹设置成黄色
cout<<Map[i][j];
color(7);//恢复
}//输出地图(由于子弹遇到边界目前会卡在边界上,所以少输出头尾
cout<<"║";//输出边界
if (i==1) printf("剩余生命:%-2d ║\n",soldier.life);
else if (i==2) cout<<"得分 :"<<setw(8)<<cnt<<"分 ║"<<endl;
else if (i==3) cout<<setw(3)<<clip<<setw(6)<<"/"<<setw(5)<<soldier.rem<<" ║"<<endl;
else if (i==4&&fclip&&soldier.rem!=0) cout<<" 换弹中... ║"<<endl;
else if (i==6&&soldier.rem==0) cout<<" 子弹耗尽! ║"<<endl;
else if (i==7&&soldier.rem==0) cout<<"请尽快到商城购买!║"<<endl;
else cout<<" ║"<<endl;
}
cout<<"╰═══════════════════╯\n";//输出游戏边界
sleep(50);//防止游戏太卡顿或者高内存,延时0.1秒
}
return 0;
}
缔造者
这是我看到的五子棋代码 (我复制过来了)
那里面确实有很多好玩的游戏 最好玩的还是五子棋
#include "codingtang.h"
#define R 15 //宏定义棋盘大小 15*15
#define C 15
using namespace std;
int x,y; //落子下标
int a[R+1][C+1]; //棋盘二维数组
string s[R+1]; //为了快速显示,将每一行拼成字符串打印
string sq; //将整个棋盘拼接成字符串
//函数声明
//1.游戏描述
void Description1(); //游戏介绍
void Description2(); //开始菜单
void Description3(); //选择模式
void ShowMess(int m); //显示胜利消息
void Drawmap(); //绘制地图
void Clearmap(); //归零地图
string changeInt(int m); //整数转字符串
//2.角色
void Player(); //玩家落子
void Computer(); //电脑落子
//3.模式
void PvP(); //玩家对抗
void PvE(); //人机对抗
//4.判断
bool JudgeGaming(); //检查游戏是否结束
bool JudgeValue(int m,int n); //检查落子是否有效 1:可以落子 0:不能落子
int winsp(); //水平方向是否胜利
int winsz(); //竖直方向是否胜利
int winzdjx(); //主对角线上是否胜利
int winfdjx(); //副对角线上是否胜利
//主函数
int main(){
createConsole("GoBang"); //创建窗口
setTextColor(COLOR_WHITE); //设置文字颜色为白色
setBackgroundColor(COLOR_BLACK); //设置背景色为黑色
Description1(); //游戏介绍
cls(); //清屏
index: //goto 的跳转点
Description2(); //开始菜单
int pos;
pos = getInt(); //输入1开始
if(pos==1){
cls(); //清屏
Description3(); //选择模式
int choose;
choose = getInt();
if(choose==1){ //1:pvp 人人对弈
PvP();
cls();
goto index; //游戏结束回到主页选择
}
else if(choose==2){ //2: pve 人机对弈
PvE();
cls();
goto index; //游戏结束回到主页选择
}
else{
cls();
goto index; //游戏结束回到主页选择
}
}
return 0;
}
void Description1(){ //游戏介绍
print("..................................\n");
print(". .\n");
print(". 五子棋 .\n");
print(". .\n");
print(". 作者 - 李伟 .\n");
print(". .\n");
for(int i=1;i<=34;i++){
sleep(10);
print(".");
}
print("\n");
}
void Description2(){ //开始菜单
print("..................................\n");
print(". .\n");
print(". 欢迎进入五子棋 .\n");
print(". .\n");
print(". 开始游戏 .\n");
print(". Yes(1) No(0) .\n");
print(". .\n");
for(int i=1;i<=34;i++){
sleep(10);
print(".");
}
print("\n");
}
void Description3(){ //选择模式
print("..................................\n");
print(". 请选择游戏模式 .\n");
print(". .\n");
print(". 玩家对战 PvP -- 1 .\n");
print(". 人机对战 PvE -- 2 .\n");
print(". 返回主菜单 -- 3 .\n");
for(int i=1;i<=34;i++){
sleep(10);
print(".");
}
print("\n");
}
string changeInt(int m){ //整数转字符串
string zf;
switch(m){
case 0: {zf="0";break;}
case 1: {zf="1";break;}
case 2: {zf="2";break;}
case 3: {zf="3";break;}
case 4: {zf="4";break;}
case 5: {zf="5";break;}
case 6: {zf="6";break;}
case 7: {zf="7";break;}
case 8: {zf="8";break;}
case 9: {zf="9";break;}
case 10: {zf="10";break;}
case 11: {zf="11";break;}
case 12: {zf="12";break;}
case 13: {zf="13";break;}
case 14: {zf="14";break;}
case 15: {zf="15";break;}
}
return zf;
}
void ShowMess(int m){ //显示胜利消息
if(m==0){
print("--------------------------------\n");
print("-----------黑子 胜利-------------\n");
print("- -\n");
print("-----------Game Over------------\n");
print("--------------------------------\n");
}
else{
print("--------------------------------\n");
print("-----------白子 胜利-------------\n");
print("- -\n");
print("-----------Game Over------------\n");
print("--------------------------------\n");
}
return ;
}
void Drawmap(){ //绘制地图
string s1=" 0 1 2 3 4 5 6 7 8 9 10111213141516";
for(int i=0;i<=R;i++){ //遍历整个二维数组
if(i==0) s[0]+="□"; //第一行为 □
else if(i==R) s[R]+="□"; //第R行为 □
for(int j=0;j<=C;j++){
if(i==0) s[0]+="□"; //第一行为 □
else if(i==R) s[R]+="□"; //第R行为 □
else if(j==0) s[i]+="□"; //第一列为 □
else if(j==C) s[i]+="□"; //第C行为 □
else if(a[i][j]==0){ //0表示未落子
s[i]+=" + ";
}
else if(a[i][j]==4){ //4表示落黑子(实心圆)
s[i]+="●";
}
else if(a[i][j]==8){ //8表示落白子 (空心圆)
s[i]+="○";
}
}
}
sq+=s1+"\n";
for(int i=0;i<10;i++){ //上面将每一行拼接成字符串+行号
sq+=" "+changeInt(i)+s[i]+"\n";
}
for(int i=10;i<=R;i++){ //上面将每一行拼接成字符串+行号
sq+=" "+changeInt(i)+s[i]+"\n";
}
//分成两个循环原因是一位数与两位数对齐不同
print(sq); //输出整个棋盘
sq=""; //清空棋盘
for(int i=0;i<=R;i++){
s[i]=""; //清空每一行
}
}
void Clearmap(){ //归零地图
for(int i=1;i<R;i++){
for(int j=1;j<C;j++){
a[i][j]=0;
}
}
}
void Player(){ //玩家落子
int p1,p2;
while(1){
p1=getInt(); //输入坐标
p2=getInt();
if(JudgeValue(p1,p2)){ //判断是否有效,有效就跳出,无效重新输入
break;
}
print("输入的下标无效,请重新输入\n");
}
x=p1; //将有效的坐标记录
y=p2;
}
void Computer(){ //电脑落子
int p1,p2;
while(1){
p1 = (rand() % R) + 1; //产生从1~R的随机数
srand((unsigned int)time(NULL));
p2 = (rand() % C) + 1; //产生从1~C的随机数
srand((unsigned int)time(NULL));
if(JudgeValue(p1,p2)){ //判断是否有效,有效就跳出,无效重新输入
break;
}
}
x=p1;
y=p2;
}
void PvP(){ //玩家对抗
New:
cls();
Clearmap(); //
print("欢迎进入玩家对抗,祝您游戏愉快!\n");
print("载入中");
for(int i=1;i<=6;i++){
sleep(200);
print(".");
}
print("\n加载完成,开始游戏\n");
sleep(1000);
int ff=1; // 1为黑子 0为白子
while(1){
cls();
Drawmap();
if(ff==1){
sleep(1000);
print("黑子(玩家1)回合\n");
print("请下棋\n输入对应的下标( , )\n");
Player();
a[x][y]=4;
ff=0;
}
else{
print("白子(玩家2)回合\n");
print("请下棋\n输入对应的下标( , )\n");
Player();
a[x][y]=8;
ff=1;
}
if(JudgeGaming()==0){ //游戏结束
cls();
Drawmap();
ShowMess(ff);
sleep(3000);
cls();
print("----------------------------------\n");
print("-----------是否继续游戏-----------\n");
print("- -\n");
print("-----继续(1) 返回主菜单(0)-----\n");
print("----------------------------------\n");
int choose;
choose = getInt();
if(choose == 1){
goto New ;
}
else{
return ;
}
}
}
}
void PvE(){ //人机对抗
New1:
cls();
int cnt=0;
Clearmap(); //清屏
print("欢迎进入人机对抗,祝您游戏愉快!\n");
print("载入中");
for(int i=1;i<=6;i++){
sleep(200);
print(".");
}
print("\n加载完成,开始游戏\n");
sleep(1000);
int ff=1; // 1为黑子 0为白子
while(1){
cls();
Drawmap(); //绘制地图
if(ff==1){ //判断是黑子还是白子回合
print("黑子(玩家)回合\n");
print("请下棋\n输入对应的下标( , )\n");
Player(); //确定玩家落子的坐标
a[x][y]=4;
ff=0;
}
if(JudgeGaming()==0){ //游戏结束
cls();
Drawmap();
ShowMess(ff); //显示结束信息
sleep(3000);
cls();
print("----------------------------------\n");
print("-----------是否继续游戏-----------\n");
print("- -\n");
print("-----继续(1) 返回主菜单(0)-----\n");
print("----------------------------------\n");
int choose;
choose = getInt();
if(choose == 1){
goto New1 ; //继续
}
else{
return ;
}
}
if(ff==0){ //白子回合,电脑回合
Computer(); //获得电脑下子坐标
a[x][y]=8;
ff=1; //下一回合变成玩家回合
}
if(JudgeGaming()==0){ //游戏结束
cls();
Drawmap();
ShowMess(ff);
sleep(3000);
cls();
print("----------------------------------\n");
print("-----------是否继续游戏-----------\n");
print("- -\n");
print("-----继续(1) 返回主菜单(0)-----\n");
print("----------------------------------\n");
int choose;
choose = getInt();
if(choose == 1){
goto New1 ;
}
else{
return ;
}
}
}
}
bool JudgeGaming(){ //检查游戏是否结束
if(winsp()==1||winsz()==1||winzdjx()==1||winfdjx()==1){ //胜利判断
return 0;
}
else{
return 1;
}
}
bool JudgeValue(int m,int n){ //检查落子是否有效 1:可以落子 0:不能落子
if(m>0&&m<R && n>0&&n<R){ //没有超出棋盘
if(a[m][n]!=4 && a[m][n]!=8){ //该处没有棋子
return 1;
}
}
return 0;
}
int winsp(){ //水平方向有没有五子
int total=0;
for(int i=y-1;i>=1;i--){ //从x,y往左开始找连续棋子数
if(a[x][i]==a[x][y]){
total++;
}
else{
break;
}
}
for(int i=y;i<=R;i++){ //从x,y往右开始找连续棋子数
if(a[x][i]==a[x][y]){
total++;
}
else{
break;
}
}
if(total>=5){ //连续棋子数大于等于5 胜利
return 1;
}
else{
return 0;
}
}
int winsz(){ //竖直方向有没有五子 找这个棋子的竖直方向
int total=0;
for(int i=x-1;i>=1;i--){
if(a[i][y]==a[x][y]){
total++;
}
else{
break;
}
}
for(int i=x;i<=R;i++){
if(a[i][y]==a[x][y]){
total++;
}
else{
break;
}
}
if(total>=5){
return 1;
}
else{
return 0;
}
}
int winzdjx(){ //对角线方向有没有五子 找这个棋子对角线方向
int total=0;
bool fla=0;
for(int i=x-1;i>=1;i--){
for(int j=y-1;j>=1;j--){
if(i-j==x-y){
if(a[i][j]==a[x][y]){
total++;
}
else{
fla=1;
break;
}
}
}
if(fla==1){
break;
}
}
fla=0;
for(int i=x;i<=R;i++){
for(int j=y;j<=C;j++){
if(i-j==x-y){
if(a[i][j]==a[x][y]){
total++;
}
else{
fla=1;
break;
}
}
}
if(fla==1){
break;
}
}
if(total>=5){
return 1;
}
else{
return 0;
}
}
int winfdjx(){ //副对角线方向有没有五子 找这个棋子斜对角线方向
int total=0;
bool fla=0;
for(int i=x-1;i>=1;i--){
for(int j=y-1;j<=C;j++){
if(i+j==x+y){
if(a[i][j]==a[x][y]){
total++;
}
else{
fla=1;
break;
}
}
}
if(fla==1){
break;
}
}
fla=0;
for(int i=x;i<=R;i++){
for(int j=y;j>=1;j--){
if(i+j==x+y){
if(a[i][j]==a[x][y]){
total++;
}
else{
fla=1;
break;
}
}
}
if(fla==1){
break;
}
}
if(total>=5){
return 1;
}
else{
return 0;
}
}
中级天翼
请问为什么
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),corcorcor);
会报错