C++小游戏的主意(“海战游戏”)

#include <shlobj.h>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
void color(int forg, int back)
{
	WORD wc=((back & 0x0F)<<4)+(forg&0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),wc);
	return ;
}
string str="-:海域,*:己方船只,x:已被打击的海域,?:未探明敌方海域\n";
char x[11][11],y[11][11];
bool z[11][11],x2[11][11];
int n=1,A,B,hp=20,ehp=20;
bool v,d=true;
void movewindow()
{
	int sktime=10,skdis=10;
	RECT rect;
	HWND win = NULL ,oldwin = NULL;
	int X,Y,W,H,i;
	for(i=1;i<=10;i++)
	{
		win=GetForegroundWindow();
		if(win!=oldwin)
		{
			GetWindowRect(win,&rect);
			X=rect.left;
			Y=rect.top;
			W=rect.right-X;
			H=rect.bottom-Y;
			oldwin=win;
		}
		MoveWindow(win,X-skdis,Y,W,H,TRUE);
		Sleep(sktime);
		MoveWindow(win,X-skdis,Y-skdis,W,H,TRUE);
		Sleep(sktime);
		MoveWindow(win,X,Y-skdis,W,H,TRUE);
		Sleep(sktime);
		MoveWindow(win,X,Y,W,H,TRUE);
		Sleep(sktime);
	}
	return ;
}
void show()
{
	int i,j;
	cout<<"        ";
	color(2,15);
	cout<<" 我   方 ";
	color(0,15);
	cout<<"              ";
	color(4,15);
	cout<<" 敌   方\n" ;
	color(0,15);
	cout<<"   A B C D E F G H I J    A B C D E F G H I J \n";
	for(i=1;i<=10;i++)
	{
		if(i<10)	cout<<i<<"  ";
		else  cout<<i<<" ";
		for(j=1;j<=10;j++)
		{
			if(x[i][j]=='*')  color(2,15);
			if(x[i][j]=='x'&&x2[i][j]==true)  color(4,15);
			cout<<x[i][j]<<' ';
			color(0,15);
		}
		cout<<"   ";
		for(j=1;j<=10;j++)
		{
			if(y[i][j]=='x'&&z[i][j]==true)  color(4,15);
			if(v==false)   cout<<y[i][j]<<' ';
			else
			{
				if(z[i][j]==false)  cout<<'-';
				else  cout<<'*';
				cout<<' ';
			}
			color(0,15);
		}
		
		cout<<'\n';
	}
	return ;
}
int getrand(int mn,int mx)
{
	int x=rand()%(mx-mn+1)+mn;
    return x;
}
bool isvalid_1(int a,int b)
{
	if(x[a-1][b]=='-'&&x[a+1][b]=='-'&&x[a][b-1]=='-'&&x[a][b+1]=='-'&&x[a][b]=='-')  return true;
	else  return false;
}
void summon_1()
{
	int i;
	int cx=getrand(4,7),cy=getrand(4,7),dir=getrand(1,4);
	switch(dir){
		case 1:x[cx][cy]=x[cx-1][cy]=x[cx-2][cy]=x[cx-3][cy]='*';break;
		case 2:x[cx][cy]=x[cx][cy+1]=x[cx][cy+2]=x[cx][cy+3]='*';break;
		case 3:x[cx][cy]=x[cx+1][cy]=x[cx+2][cy]=x[cx+3][cy]='*';break;
		case 4:x[cx][cy]=x[cx][cy-1]=x[cx][cy-2]=x[cx][cy-3]='*';break;
		default:break;
	}
	for(i=1;i<=2;i++){
		bool exit=false;
		while(1){
			int cx=getrand(3,8),cy=getrand(3,8),dir=getrand(1,4);
			switch(dir){
				case 1:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx+1,cy)&&isvalid_1(cx+2,cy)){
						x[cx][cy]=x[cx+1][cy]=x[cx+2][cy]='*';
						exit=true;
					}
					break;
				}
				case 2:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx,cy+1)&&isvalid_1(cx,cy+2)){
						x[cx][cy]=x[cx][cy+1]=x[cx][cy+2]='*';
						exit=true;
					}
					break;
				}
				case 3:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx-1,cy)&&isvalid_1(cx-2,cy)){
						x[cx][cy]=x[cx-1][cy]=x[cx-2][cy]='*';
						exit=true;
					}
					break;
				}
				case 4:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx,cy-1)&&isvalid_1(cx,cy-2)){
						x[cx][cy]=x[cx][cy-1]=x[cx][cy-2]='*';
						exit=true;
					}
					break;
				}
				default:break;
			}
			if(exit==true)  break;
		}
	}
	for(i=1;i<=3;i++){
		bool exit=false;
		while(1){
			int cx=getrand(2,9),cy=getrand(2,9),dir=getrand(1,4);
			switch(dir){
				case 1:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx+1,cy)){
						x[cx][cy]=x[cx+1][cy]='*';
						exit=true;
					}
					break;
				}
				case 2:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx,cy+1)){
						x[cx][cy]=x[cx][cy+1]='*';
						exit=true;
					}
					break;
				}
				case 3:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx-1,cy)){
						x[cx][cy]=x[cx-1][cy]='*';
						exit=true;
					}
					break;
				}
				case 4:{
					if(isvalid_1(cx,cy)&&isvalid_1(cx,cy-1)){
						x[cx][cy]=x[cx][cy-1]='*';
						exit=true;
					}
					break;
				}
				default:break;
			}
			if(exit==true)  brea
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值