C語言實現人物動態移動效果

大家好 , 我是逼哥 , 記得每天好好學習 , 天天向上 , 尤其是大學生 . 不要荒廢學業.

首先說明 , 我使用的開發環境是  vs2017  , 有些函數方法可能不通用 ,大家可以百度下其他方法. 向童老師致敬.

實現圖片中人物的行走效果 , 即4張圖合成一個人物動態走路的效果 , 分別是向左行走和向右行走.

當4張圖輪流的播放時 , 人的停留效果就會出現 , 看起來像是人在走動

#include <graphics.h>
#include <conio.h>
int main()
{
	initgraph(480, 300);
	IMAGE img_human, img_walls;	// 定義 IMAGE 對象

	loadimage(&img_human, _T("D:\\桌面\\行走素材圖.jpg"));
	//putimage(0, 0, 75, 130, &img_human, 0, 0);
	loadimage(&img_walls, _T("D:\\桌面\\walls.gif"));
	int x, y; // 小人整體的座標位置
	x = 250;
	y = 80;
	int left_i = 0;  // 向左行走動畫的序號
	int right_i = 0; // 向右行走動畫的序號
	char input;

	int maps[8][5] = { 0 }; // 存儲地圖信息,0爲空地,1爲牆
	int i, j;
	// 以下讓地圖四個邊界爲牆
	for (i = 0; i<8; i++)
	{
		maps[i][0] = 1;
		maps[i][4] = 1;
	}
	for (j = 0; j<5; j++)
	{
		maps[0][j] = 1;
		maps[7][j] = 1;
	}

	// 顯示地圖圖案
	for (i = 0; i<8; i++)
		for (j = 0; j<5; j++)
			if (maps[i][j] == 1)
				putimage(i * 60, j * 60, &img_walls);

	putimage(x, y, 75, 130, &img_human, 0, 0);
	BeginBatchDraw();

	while (1)
	{
		if (_kbhit())  // 判斷是否有輸入
		{
			input = _getch();  // 根據用戶的不同輸入來移動,不必輸入回車
			if (input == 'a') // 左移
			{
				//clearrectangle(x, y, x + 75, y + 130);	// 清空畫面全部矩形區域
				left_i++;
				if (x>60) // 沒有達到左邊的牆,才移動小人的座標
					x = x - 10;
				putimage(x, y, 75, 130, &img_human, left_i * 75, 0);
				FlushBatchDraw();
				Sleep(1);
				if (left_i == 3)
					left_i = 0;
			}
			else if (input == 'd')  // 右移
			{
				//clearrectangle(x, y, x + 75, y + 130);	// 清空畫面全部矩形區域
				right_i++;
				if (x<340) // 沒有達到右邊的牆,才移動小人的座標
					x = x + 10;
				putimage(x, y, 75, 130, &img_human, right_i * 75, 120);
				FlushBatchDraw();
				Sleep(1);
				if (right_i == 3)
					right_i = 0;
			}
		}
	}
	return 0;
}

圖片資源可以從網上隨便下載下來 , 到處都有的哦!

大家可以在百度上搜索: 遊戲人物行走效果圖 , 有很多哦 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章