“我”與“鬼”追趕游戲-創(chuàng)新互聯(lián)

本文章是用C++純字符打印來(lái)實(shí)現(xiàn)“我”與“鬼”的追趕游戲,主要是玩家操縱“我”來(lái)躲避“鬼”

創(chuàng)新互聯(lián)公司堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十載網(wǎng)站建設(shè)經(jīng)驗(yàn)創(chuàng)新互聯(lián)公司是成都老牌網(wǎng)站營(yíng)銷(xiāo)服務(wù)商,為您提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5建站、網(wǎng)站制作、高端網(wǎng)站設(shè)計(jì)、成都微信小程序服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。

1.思路
使用換行代表縱軸坐標(biāo),使用空格代表橫向坐標(biāo)

2.代碼實(shí)現(xiàn)
(1)頭文件
在這里我們沒(méi)有只用一個(gè)萬(wàn)能頭文件,因?yàn)槿f(wàn)能頭文件并不包含這個(gè)頭文件的函數(shù),而這個(gè)程序需要用到按鍵實(shí)現(xiàn)對(duì)人物的控制,為了保證游戲的可玩性,我們一般不會(huì)使用cin>>來(lái)實(shí)現(xiàn)按鍵操作;

#include//萬(wàn)能頭文件
#include//接收按鍵信息
using namespace std;
int main()
{return 0;
}

(2)變量(在主函數(shù)內(nèi))

int x=10,y=4,gx,gy;//xy表示“我”的坐標(biāo),gxgy表示“鬼”的坐標(biāo)
	char yd;//檢測(cè)按鍵的變量
	int sjs,a;
	srand(time(0));//隨機(jī)數(shù) 
	sjs=rand()%10+1;//隨機(jī)數(shù) 
	gx=sjs*2;
	gy=sjs*3;
	cout<<"WASD移動(dòng),你的目標(biāo)是躲開(kāi)鬼離開(kāi)這個(gè)房間"<

(3)
接下來(lái)寫(xiě)一個(gè)死循環(huán),來(lái)支持程序運(yùn)行,注意,接下來(lái)的程序均在這個(gè)死循環(huán)當(dāng)中

for(int i=1;i>0;i++)
{}

(4)控制以及變量變化
這里主要涉及到的就是“鬼”追趕“我”的運(yùn)動(dòng)軌跡,對(duì)這兩者的坐標(biāo)計(jì)算,以及運(yùn)用到_getch()函數(shù)來(lái)接收鍵盤(pán)按鍵的信號(hào);(wasd移動(dòng))而這里調(diào)用系統(tǒng)指令“cls”,我們放到后續(xù)的代碼中講;
運(yùn)用if語(yǔ)句判斷按下的是什么上下左右鍵;
在代碼中“鬼”的追趕路徑尊崇著x軸(橫向)優(yōu)先

yd=_getch();//按下按鍵
		system("cls");//清屏
		if(yd=='w')
		{	y--;
		}
		if(yd=='s')
		{	y++;
		}
		if(yd=='a')
		{	x--;
		}
		if(yd=='d')
		{	x++;
		}
		if(gx	gx++;
		}
		else
		{	if(gx>x)
			{		gx--;
			}
			else
			{		if(gygy++;
				}
				else
				{if(gy>y)
					{gy--;
					}
					else
					{cout<<"你輸了"; //兩個(gè)坐標(biāo)都==“我”的坐標(biāo),所以肯定是碰到鬼了
					}
				}
			}
		}

(5)打印字符
因?yàn)檫@個(gè)程序是純打印字符,所以我們需要判斷是鬼先輸出還是我先輸出,而判斷這個(gè)的唯一標(biāo)準(zhǔn)是縱軸(y)
縱軸在另外一個(gè)角色上的就先輸出,橫軸同理。

if(gy>y)
		{	for(int iy=1;iy<=y;iy++)//這里的iy,ix都是用來(lái)造循環(huán)的
			{		cout<		cout<<"  ";
			}
			cout<<"我"; 
			for(int iy=1;iy<=gy-y;iy++)
			{		cout<		cout<<"  ";
			}
			cout<<"鬼";
			for(int ii=1;ii<=25-gy;ii++)//這里的目的就是為了填滿已打印出來(lái)的字符的剩余部分,不然運(yùn)行程序時(shí)人物就會(huì)一直在底下
			{		cout<

接下來(lái)依舊是打印字符,上面那種情況是“鬼”的縱軸大于“我”的縱軸,接下來(lái)還要進(jìn)行x軸的判斷,以及“鬼”的縱軸等于“我”的縱軸,“鬼”的縱軸小于“我”的縱軸;

if(y==gy)
		{	for(int iy=1;iy<=gy||iy<=y;iy++)
			{		cout<		for(int ix=1;ix<=x;ix++)
				{cout<<"  ";//這里用兩個(gè)空格是因?yàn)閷?shí)際上一個(gè)空格只有半個(gè)字符的寬度
				}
				cout<<"我"; 
				for(int ix=1;ix<=gx-x;ix++)
				{cout<<"  ";
				}
				cout<<"鬼"; 
				for(int ii=1;ii<=25-gy;ii++)
				{cout<		for(int ix=1;ix<=gx;ix++)
				{cout<<"  ";
				}
				cout<<"鬼";
				for(int ix=1;ix<=x-gx;ix++)
				{cout<<"  ";
				} 
				cout<<"我"; 
				for(int ii=1;ii<=25-y;ii++)
				{cout<

(6)判斷輸贏
我們已經(jīng)做好了“我”的移動(dòng)以及“鬼”的人機(jī)移動(dòng),接下來(lái)就是要加入一個(gè)門(mén),來(lái)判定“我”有沒(méi)有碰到“鬼”以及“我”有沒(méi)有走到門(mén),實(shí)現(xiàn)這個(gè)主要就是測(cè)量出門(mén)的xy坐標(biāo),鬼的xy坐標(biāo)是否與“我”的相同即可;

cout<<"                                                門(mén)                                               "; 
		if(gy==y)//如果“鬼”和“我”的縱軸相等(這里可以采用gy==y&&gx==x)
		{	if(gx==x)//如果“鬼”和“我”的橫軸相等
			{		system("cls");//清屏,游戲結(jié)束
				cout<<"你輸了"; 
			}
		}
		if(x==24&&y==24)
		{	for(int ii=1;ii<=25;ii++)
			{		cout<

這樣到這里整個(gè)程序的開(kāi)發(fā)就完畢了,難度是很小的,只要掌握三種基本結(jié)構(gòu)基本就可以獨(dú)立完成這樣的一個(gè)小程序
接下來(lái)放出全代碼:

#include#includeusing namespace std;
int main()
{int x=10,y=6,gx,gy;
	char yd;
	int sjs,a;
	srand(time(0));//隨機(jī)數(shù) 
	sjs=rand()%10+1;//隨機(jī)數(shù) 
	gx=sjs;
	gy=sjs;
	cout<<"WASD移動(dòng),你的目標(biāo)是躲開(kāi)鬼離開(kāi)這個(gè)房間"<=0;i++)
	{yd=_getch();
		system("cls");
		if(yd=='w')
		{	y--;
		}
		if(yd=='s')
		{	y++;
		}
		if(yd=='a')
		{	x--;
		}
		if(yd=='d')
		{	x++;
		}
		if(gx	gx++;
		}
		else
		{	if(gx>x)
			{		gx--;
			}
			else
			{		if(gygy++;
				}
				else
				{if(gy>y)
					{gy--;
					}
					else
					{cout<<"你輸了"; 
					}
				}
			}
		}
		if(gy>y)
		{	for(int iy=1;iy<=y;iy++)
			{		cout<		cout<<"  ";
			}
			cout<<"我"; 
			for(int iy=1;iy<=gy-y;iy++)
			{		cout<		cout<<"  ";
			}
			cout<<"鬼";
			for(int ii=1;ii<=25-gy;ii++)
			{		cout<gy)
		{	for(int iy=1;iy<=gy;iy++)
			{		cout<		cout<<"  ";
			}
			cout<<"鬼"; 
			for(int iy=1;iy<=y-gy;iy++)
			{		cout<		cout<<"  ";
			}
			cout<<"我"; 
			for(int ii=1;ii<=25-y;ii++)
			{		cout<	for(int iy=1;iy<=gy||iy<=y;iy++)
			{		cout<		for(int ix=1;ix<=x;ix++)
				{cout<<"  ";
				}
				cout<<"我"; 
				for(int ix=1;ix<=gx-x;ix++)
				{cout<<"  ";
				}
				cout<<"鬼"; 
				for(int ii=1;ii<=25-gy;ii++)
				{cout<		for(int ix=1;ix<=gx;ix++)
				{cout<<"  ";
				}
				cout<<"鬼";
				for(int ix=1;ix<=x-gx;ix++)
				{cout<<"  ";
				} 
				cout<<"我"; 
				for(int ii=1;ii<=25-y;ii++)
				{cout<	if(gx==x)
			{		system("cls");
				cout<<"你輸了"; 
			}
		}
		if(x==24&&y==24)
		{	for(int ii=1;ii<=25;ii++)
			{		cout<

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章名稱:“我”與“鬼”追趕游戲-創(chuàng)新互聯(lián)
路徑分享:http://muchs.cn/article34/djgise.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站策劃網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、定制開(kāi)發(fā)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司