Hello大家好,我是阳了个阳C++
最近放暑假了,给大家做了一个打地鼠的游戏代码
本来我的计划是写一个计时器,然后在规定时间内打倒一定数量的地鼠才算胜利
可问题是这个计时器我不会写
但为了我的粉丝们,我还是努力学习起来
于是经过一个多星期的学习
我终于是放弃了……
(作者菌不会写线程,有没有大佬能教教我……)
于是我不得不把计时器删掉,做了一个简化版的:
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
char key;
char ground[15][15];
int goal=15,cnt;
void cls(){
system("cls");
}
void start(){
cout<<"欢迎来到打地鼠游戏\n\n";
cout<<"制作:阳了个阳C++\n\n";
cout<<"进入游戏请按e\n\n";
cin>>key;
while(key!='e'){
cls();
cout<<"进入游戏请按e\n\n";
cin>>key;
}
return;
}
void rules(){
cout<<"游戏规则如下\n\n";
cout<<"开始后,地图上会随机出现一些地鼠(表示为!)\n\n";
cout<<"你可以通过输入坐标来打倒地鼠\n\n";
cout<<"被打倒的地鼠将会出现在另一个位置\n\n";
cout<<"消灭指定数量的地鼠后就会获胜\n\n";
cout<<"那么,按e开始游戏吧!\n\n";
cin>>key;
while(key!='e'){
cls();
cout<<"开始游戏请按e\n\n";
cin>>key;
}
return;
}
void setmap(){
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
ground[i][j]='.';
}
}
for(int i=1;i<=5;i++){
int x=rand()%10+1;
int y=rand()%10+1;
if(ground[x][y]!='!'){
ground[x][y]='!';
}else{
i--;
}
}
}
void ready(){
for(int i=5;i>0;i--){
cls();
cout<<i;
Sleep(1000);
}
}
void coutmap(){
cout<<"已击倒地鼠:"<<cnt<<"个 目标:"<<goal<<"个\n\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
for(int i=0;i<=10;i++){
cout<<i;
if(i!=10) cout<<" ";
}
cout<<"\n";
for(int i=1;i<=10;i++){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
cout<<i;
if(i!=10) cout<<" ";
for(int j=1;j<=10;j++){
if(ground[i][j]=='.'){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
}else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
}
cout<<ground[i][j]<<" ";
}
cout<<"\n";
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
}
void check(int x,int y){
if(ground[x][y]=='!'){
cnt++;
bool ok;
while(!ok){
int nx=rand()%10+1,ny=rand()%10+1;
if(ground[nx][ny]!='!'){
ground[nx][ny]='!';
ground[x][y]='.';
ok=1;
}
}
}
}
void win(){
cout<<"恭喜你,你通关了!\n\n";
cout<<"开始下一局请按e\n\n";
cin>>key;
if(key!='e'){
exit(0);
}
}
int main(){
srand(time(NULL));
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
start();
cls();
rules();
cls();
while(key=='e'){
setmap();
ready();
cls();
int x,y;
goal+=5,cnt=0;
coutmap();
while(cin>>x>>y){
if(x>10||y>10||x<1||y<1)
continue;
cls();
check(x,y);
if(cnt==goal){
cls();
win();
break;
}
coutmap();
}
cls();
}
return 0;
}
如果代码有bug,欢迎大家指出
也请大家放心,等我学会了写线程,我一定还会回来的!!!
(大灰狼:这话怎么那么熟悉呢)
byebye!