国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++推箱子小游戲

這篇具有很好參考價值的文章主要介紹了c++推箱子小游戲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

上代碼:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int  map[2][7][8] =
{
	//0:空的 1:■ :墻
	//3:☆ 4:★  //目的地和箱子
	//5:※		  //人
	//7:⊙		  //目的(3)和箱子(4)在一起
	//8:※		  //人(5)和目的(3)在一起
	//為讓多種情況使用一種算法
 
	{
	1, 1, 1, 1, 1, 1, 1, 1,
	1, 0, 0, 0, 0, 0, 0, 1,
	1, 3, 1, 0, 1, 1, 3, 1,
	1, 4, 0, 0, 4, 0, 3, 1,
	1, 0, 1, 0, 1, 1, 4, 1,
	1, 0, 0, 5, 0, 0, 0, 1,
	1, 1, 1, 1, 1, 1, 1, 1
	},
	{
		1, 1, 1, 1, 1, 1, 1, 1,
		1, 0, 0, 0, 0, 0, 0, 1,
		1, 3, 1, 0, 1, 1, 3, 1,
		1, 3, 4, 5, 4, 0, 3, 1,
		1, 4, 1, 0, 1, 1, 4, 1,
		1, 0, 0, 0, 0, 0, 0, 1,
		1, 1, 1, 1, 1, 1, 1, 1
	}
};
int cas = 0;	//為0表示第一關(guān)
//記錄每一關(guān)的箱子數(shù) 或者是項目和目的在一起的總數(shù)
int boxSum[2] = {3,4};
//地圖繪圖
void drawMap()
{
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (j == 0)
				printf("\t\t");
			switch (map[cas][i][j])
			{
				//	//0:空的 1:■ :墻
			case 0:
				printf("  ");
				break;
			case 1:
				printf("■");
				break;
				//3:☆ 4:★  //目的地和箱子
			case 3:
				printf("☆");
				break;
			case 4:
				printf("★");
				break;
				//5:※		  //人
			case 5:
			case 8:
				printf("※");
				break;
			case 7:
				printf("⊙");
				break;
				//7:⊙		  //目的(3)和箱子(4)在一起
				//8:※		  //人(5)和目的(3)在一起
			}
		}
		printf("\n");
	}
}
//按鍵處理
void keyDown()
{
	//分析按鍵過程
	//定位人在哪里
	//人有兩種情況:第一個是:人,第二個:人站在目的上
	int i, j;
	for (i = 0; i < 7; i++)
	{
		for (j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 5 || map[cas][i][j] == 8)
			{
				break;
			}
		}
		if (map[cas][i][j] == 5 || map[cas][i][j] == 8)
		{
			break;
		}
	}
 
	char ch = _getch();	//看不見的字符輸入,+頭文件 conio.h
	switch (ch)
	{
		//72 80   75 77
	case 'w':
	case 'W':
	case 72:
		//下一個地方等于空地或者是目的 能走
		if (map[cas][i - 1][j] == 0 || map[cas][i - 1][j] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)來了
			map[cas][i - 1][j] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		//如果下一個是箱子,要進(jìn)一步判斷能走
		//注意點(diǎn):箱子兩種狀態(tài):箱子,箱子和目的在一起
		else if (map[cas][i - 1][j] == 4 || map[cas][i - 1][j] == 7)
		{
			//做箱子的下一個地方判斷能不能走
			if (map[cas][i - 2][j] == 0 || map[cas][i - 2][j] == 3)
			{
				//新的地方箱子來了
				map[cas][i - 2][j] += 4;
				//箱子的位置:箱子(-4)走了 人來(+5)
				map[cas][i - 1][j] += 1;
				//原來的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
 
		break;
	case 's':
	case 'S':
	case 80:
		//下一個地方等于空地或者是目的 能走
		if (map[cas][i + 1][j] == 0 || map[cas][i + 1][j] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)來了
			map[cas][i + 1][j] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		else if (map[cas][i + 1][j] == 4 || map[cas][i + 1][j] == 7)
		{
			//做箱子的下一個地方判斷能不能走
			if (map[cas][i + 2][j] == 0 || map[cas][i + 2][j] == 3)
			{
				//新的地方箱子來了
				map[cas][i + 2][j] += 4;
				//箱子的位置:箱子(-4)走了 人來(+5)
				map[cas][i + 1][j] += 1;
				//原來的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
		break;
 
	case 'a':
	case 'A':
	case 75:
		//下一個地方等于空地或者是目的 能走
		if (map[cas][i][j - 1] == 0 || map[cas][i][j - 1] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)來了
			map[cas][i][j - 1] = map[cas][i][j - 1] + 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] = map[cas][i][j] - 5;
			//j+=5  j=j+5
 
		}
		else if (map[cas][i][j - 1] == 4 || map[cas][i][j - 1] == 7)
		{
			//做箱子的下一個地方判斷能不能走
			if (map[cas][i][j - 2] == 0 || map[cas][i][j - 2] == 3)
			{
				//新的地方箱子來了
				map[cas][i][j - 2] += 4;
				//箱子的位置:箱子(-4)走了 人來(+5)
				map[cas][i][j - 1] += 1;
				//原來的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
 
		break;
	case 'D':
	case 'd':
	case 77:
		//下一個地方等于空地或者是目的 能走
		if (map[cas][i][j + 1] == 0 || map[cas][i][j + 1] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)來了
			map[cas][i][j + 1] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		
		//下一個地方是箱子,判斷箱子的下一個地方是不是目的和空地
		else if (map[cas][i][j + 1] == 4 || map[cas][i][j + 1] == 7)
		{
			//做箱子的下一個地方判斷能不能走
			if (map[cas][i][j + 2] == 0 || map[cas][i][j + 2] == 3)
			{
				//新的地方箱子來了
				map[cas][i][j + 2] += 4;
				//箱子的位置:箱子(-4)走了 人來(+5)
				map[cas][i][j + 1] += 1;
				//原來的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
		break;
	}
}
//勝負(fù)判斷
//用什么判斷勝負(fù): 箱子到達(dá)目的的個數(shù)
int gameOver()
{
	int count = 0;
	//所有的地方找一遍
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 7)
				count++;
		}
	}
	return count;
}
//箱子數(shù)是零的時候也是勝利
int gameOver2()
{
	int count = 3;
	//所有的地方找一遍
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 3)
				count--;
		}
	}
	return count;
}
 
int main()
{
	while (1)
	{
		printf("\n\t用方向鍵或w a s d鍵移動※推動★進(jìn)入☆\n",cas+1);
		printf("\n\t\t 共兩關(guān) 第 %d 關(guān)\n",cas+1);
		drawMap();
		if (gameOver() == boxSum[cas])
		{
			cas++;
			if (cas == 2)
				break;
			else
			    printf("\n\t\t 該關(guān) OK!按任一鍵進(jìn)繼續(xù)\n");	
		}
		keyDown();
		system("cls");
	}
	printf("游戲結(jié)束!");
	printf("\n");
	system("pause");
	return 0;
}

由于寫游戲時間較長,更新較慢,請大佬們理解一下文章來源地址http://www.zghlxwxcb.cn/news/detail-703308.html

到了這里,關(guān)于c++推箱子小游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【HTML小游戲】推箱子網(wǎng)頁版(附完整源碼)

    【HTML小游戲】推箱子網(wǎng)頁版(附完整源碼)

    最近剛剛更新完了HTML,CSS的萬字總結(jié) ,有很多人已經(jīng)學(xué)習(xí)完了文章,感覺反饋還不錯,今天,用HTML,CSS,JS的知識編寫了一個童年經(jīng)典游戲 - 推箱子,供學(xué)習(xí)參考。 游戲主界面展示: 游戲界面展示: 經(jīng)典的推箱子是一個非常古老游戲,甚至是80,90年代的回憶,目的是在訓(xùn)

    2024年02月04日
    瀏覽(31)
  • python畢設(shè)分享 python推箱子小游戲

    python畢設(shè)分享 python推箱子小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 推箱子小游戲設(shè)計與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級對項目進(jìn)行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項目獲?。?htt

    2024年02月05日
    瀏覽(30)
  • python項目分享 推箱子小游戲設(shè)計與實(shí)現(xiàn) (源碼)

    python項目分享 推箱子小游戲設(shè)計與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品 python小游戲畢設(shè) 推箱子小游戲設(shè)計與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級對項目進(jìn)行評分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項目獲?。?htt

    2024年01月23日
    瀏覽(19)
  • 手把手教你使用Python實(shí)現(xiàn)推箱子小游戲(附完整源碼)

    手把手教你使用Python實(shí)現(xiàn)推箱子小游戲(附完整源碼)

    我們這個項目是一個基于Python實(shí)現(xiàn)的推箱子小游戲,名叫Sokoban: 這個游戲的目的是讓玩家,也就是大寫的 P ,推著箱子 # ,填充用小寫的 o 標(biāo)記的地面上的洞 該版本的Sokoban的規(guī)則如下: 游戲在矩形的二維網(wǎng)格上舉行,其 原點(diǎn)(0,0) 位于左上方 網(wǎng)格上的每個單元格可以隨時包

    2024年02月03日
    瀏覽(39)
  • 簡單的推箱子游戲?qū)崙?zhàn)

    簡單的推箱子游戲?qū)崙?zhàn)

    目錄 項目分析 ?地圖初始化 背景圖片 游戲場景圖片: 熱鍵控制 ?按鍵設(shè)置 確定人物位置 實(shí)現(xiàn)人物移動(非箱子,目的地) 推箱子控制 游戲結(jié)束 最終代碼 合法性判斷: 墻:0,地板:1,箱子目的地:2,小人:3,箱子:4,箱子命中目標(biāo):5 但是一直執(zhí)行循環(huán)塊很占用CPU ,消耗很大很嚴(yán)重資源(使用

    2024年01月22日
    瀏覽(24)
  • 使用Python語言寫一個推箱子游戲

    本游戲旨在提供一個趣味性的益智游戲,玩家需要通過推動箱子到指定位置來過關(guān)。 玩家需要推動一個或多個箱子到指定位置,才能過關(guān)。 箱子只能向前推,不能拉回來。 箱子不允許被推到障礙物、墻壁或其他箱子上。 玩家可以通過 UNDO 按鈕來撤回上一步操作,最多可以撤

    2024年02月05日
    瀏覽(17)
  • Unity游戲源碼分享-3d機(jī)器人推箱子游戲

    Unity游戲源碼分享-3d機(jī)器人推箱子游戲

    Unity游戲源碼分享-3d機(jī)器人推箱子游戲 一個非常意思的3D游戲 ? ?工程地址:https://download.csdn.net/download/Highning0007/88098014

    2024年02月15日
    瀏覽(26)
  • 怎樣使用Pyglet庫給推箱子游戲畫關(guān)卡地圖

    怎樣使用Pyglet庫給推箱子游戲畫關(guān)卡地圖

    目錄 pyglet庫 畫圖事件 按鍵事件 程序擴(kuò)展 關(guān)卡地圖 是一個跨平臺的Python多媒體庫,提供了一個簡單易用的接口來創(chuàng)建窗口、加載圖像和視頻、播放音頻、處理用戶輸入事件以及進(jìn)行2D圖形繪制。特別適合用于游戲開發(fā)、視聽?wèi)?yīng)用以及其它需要高效圖形渲染和音頻播放的項目

    2024年02月22日
    瀏覽(19)
  • 畢業(yè)設(shè)計 單片機(jī)推箱子游戲(AT89C51)

    畢業(yè)設(shè)計 單片機(jī)推箱子游戲(AT89C51)

    一、電路設(shè)計 此電路由AT89C51最小系統(tǒng)、LCD12864顯示模塊、74LS08芯片和四個獨(dú)立按鍵組成。 LCD12864顯示模塊 帶中文字庫的128X64 是一種具有4 位/8 位并行、2 線或3 線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體 中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置

    2024年02月21日
    瀏覽(95)
  • 【c語言】推箱子

    【c語言】推箱子

    所需知識:c語言枚舉,數(shù)組,for循環(huán),while循環(huán),switch,case語句,圖形庫相關(guān)函數(shù) 將printmap()在main中調(diào)用 為了讓程序不會輸入字符后退出,加上while循環(huán) 為了保證游戲的美觀性,我們將對應(yīng)的數(shù)字轉(zhuǎn)化為好看的圖案 使用兩層循環(huán)遍歷二維數(shù)組,在使用switch已經(jīng)將對應(yīng)的數(shù)字用

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包