欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言小游戲之小熊跳板功能的實(shí)現(xiàn)

 更新時(shí)間:2020年12月22日 10:02:28   作者:MengYiKeNan  
這篇文章主要介紹了C語(yǔ)言小游戲之小熊跳板功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

上篇文章給大家介紹了C語(yǔ)言實(shí)現(xiàn)桌面貪吃蛇小游戲,感興趣的朋友可以點(diǎn)擊查看,今天給大家介紹c語(yǔ)言實(shí)現(xiàn)小熊跳板功能。

C語(yǔ)言代碼,有點(diǎn)簡(jiǎn)陋,還有許多可以優(yōu)化的地方,注釋也沒(méi)寫全,后期會(huì)補(bǔ)充,后期也可能添加更多功能,我會(huì)去盡量的完善代碼。

測(cè)試工具:VS2019,語(yǔ)言:C語(yǔ)言

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<conio.h>
#include<time.h>
#include<string.h>

#define High 40
#define Width 60 //畫布大小

int people_x, people_y; //小球坐標(biāo)
int canvas[High + 1][Width + 1]; //標(biāo)記
int b1_left[3]; //橫線板板起點(diǎn)
int b1_right[3]; //橫線板板終點(diǎn)
int score = 0; //得分
int vv = 15, v_b = 8; //vv大小可以改變板板上升速度

void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x, int y)
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(handle, pos);

}

void startup()
{
	int i, j, k;
	srand(time(NULL));
	for (i = 3; i <= High; i += 3)
	{
		int t = 0;
		
		int k; 
		for (k = 0; k < 3; k++)
		{
			b1_left[k] = rand() % (Width - 6);
			b1_right[k] = b1_left[k] + rand()%3+5;

		}
		t = 3;
		while (t--) {
			for (j = b1_left[t]; j < b1_right[t]; j++)
			{
				canvas[i][j] = 2; //標(biāo)記為橫線板板
			}
		}

	}
	people_x = 2;
	people_y = 6; // 小球橫縱坐標(biāo)
	canvas[people_x][people_y] = 1; // 小球所在不能為橫線板板
	for (i = 0; i < High; i++) // 左右邊框?yàn)槭€
	{
		canvas[i][0] = -2;
		canvas[i][Width - 1] = -2;
	}
	for (j = 0; j < Width; j++) //上下邊框?yàn)門
	{
		canvas[0][j] = -1;
		canvas[High - 1][j] = -1;
	}
}

void show()
{
	gotoxy(0, 0);//把光標(biāo)啟動(dòng)到(0,0)點(diǎn),在這里功能為清屏
	int i, j;
	for (i = 0; i < High; i++)
	{
		for (j = 0; j < Width; j++)
		{
			if (canvas[i][j] == 2)
				printf("-");
			else if (canvas[i][j] == 1)
				printf("o");
			else if (canvas[i][j] == -1)
				printf("T");
			else if (canvas[i][j] == -2)
				printf("|");
			else printf(" ");
		}
		printf("\n");
	}
	printf("得分:%d\n", score);
}

int updataWithoutInput()
{

	int i, j, k;
	static int v_bord = 0, v_ball = 0;
	int flag = 0;
	int oldps_x, oldps_y;
	if (v_bord < vv) //設(shè)置更新各個(gè)部件的位置
		v_bord++;
	if (v_bord == vv) {
		for (i = 1; i <= High - 2; i++)
		{
			for (j = 1; j <= Width - 2; j++)
			{
				if (canvas[i][j] == 2 && i - 1 != 0)
				{
					canvas[i][j] = 0;
					if (canvas[i - 1][j] == 1)
					{
						people_x = i - 2; people_y = j;
						canvas[people_x][people_y] = 1;
						canvas[i - 1][j] = 2;
					}
					else
						canvas[i - 1][j] = 2;
				}
				else
				{
					if (i - 1 == 0 && canvas[i][j] == 2) {
						canvas[i][j] = 0;
						flag = 1;
					}

				}
			}
		}
		v_bord = 0;
	}
	for (i = 1; i <= Width - 2; i++)
	{
		if (canvas[people_x][i] == 2)
		{
			score++;
			break;
		}
	}

	if (v_ball < v_b)
		v_ball++;

	if (v_ball == v_b && canvas[people_x + 1][people_y] == 0)
	{
		canvas[people_x][people_y] = 0;
		people_x++;
		canvas[people_x][people_y] = 1;
		v_ball = 0;
	}

	int cnt = 0;//判斷游戲是否結(jié)束
	if (people_x == 0 || people_x == High - 2)
	{
		printf("GAMEOVER!\n");
		system("pause");
		cnt = 1;
		goto restart;
	}

	if (flag)
	{
		int t = 0;
		int k;
		for (k = 0; k < 3; k++)
		{
			b1_left[k] = rand() % (Width - 7) + 1;
			b1_right[k] = b1_left[k] + rand() % 3 + 5;
		}
		t = 3;
		while (t--) {
			for (j = b1_left[t]; j < b1_right[t]; j++)
			{
				canvas[High/3*3-3][j] = 2;
			}
		}

	}
	//Sleep(200);
restart:
	return cnt;
}

void updataWithInput()
{
	char key;
	if (_kbhit())
	{
		key = _getch();
		if ((key == 'a' || key == 75) && canvas[people_x][people_y-1] == 0)
		{
			canvas[people_x][people_y] = 0;
			people_y--;
			canvas[people_x][people_y] = 1;
		}
		if ((key == 'd' || key == 77) && canvas[people_x][people_y+1] == 0)
		{
			canvas[people_x][people_y] = 0;
			people_y++;
			canvas[people_x][people_y] = 1;
		}

	}

}

void init() {
	system("cls");
	memset(canvas, 0, sizeof canvas);
	memset(b1_left, 0, sizeof b1_left);
	memset(b1_right, 0, sizeof b1_right);
	score = 0;
	startup(); //初始化界面
}

int main()
{
	HideCursor();
start:
	init();
	while (1)
	{
		show();//畫界面
		int cnt = updataWithoutInput();
		updataWithInput();
		if (cnt == 1) goto start;
	}
}

運(yùn)行效果:

在這里插入圖片描述

到此這篇關(guān)于C語(yǔ)言小游戲之小熊跳板功能的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言小熊跳板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實(shí)現(xiàn)萬(wàn)年歷小功能

    C++實(shí)現(xiàn)萬(wàn)年歷小功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)萬(wàn)年歷小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語(yǔ)言之復(fù)雜鏈表的復(fù)制方法(圖示詳解)

    C語(yǔ)言之復(fù)雜鏈表的復(fù)制方法(圖示詳解)

    下面小編就為大家?guī)?lái)一篇C語(yǔ)言之復(fù)雜鏈表的復(fù)制方法(圖示詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • VSCode插件開(kāi)發(fā)全攻略之package.json詳解

    VSCode插件開(kāi)發(fā)全攻略之package.json詳解

    這篇文章主要介紹了VSCode插件開(kāi)發(fā)全攻略之package.json的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼

    C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言三子棋小游戲的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C語(yǔ)言中讀取時(shí)間日期的基本方法

    C語(yǔ)言中讀取時(shí)間日期的基本方法

    這篇文章主要介紹了C語(yǔ)言中讀取時(shí)間日期的基本方法,分別是time()函數(shù)和gmtime()函數(shù)的使用,注意返回值的區(qū)別,需要的朋友可以參考下
    2015-08-08
  • Qt模仿實(shí)現(xiàn)文字浮動(dòng)字母的效果

    Qt模仿實(shí)現(xiàn)文字浮動(dòng)字母的效果

    這篇文章主要介紹了通過(guò)Qt實(shí)現(xiàn)的文字浮動(dòng)的效果,效果很簡(jiǎn)單就是文本向上移動(dòng),在移動(dòng)過(guò)程中文字整體變大或縮小。感興趣的可以試一試
    2022-01-01
  • Opencv圖像處理之輪廓外背景顏色改變

    Opencv圖像處理之輪廓外背景顏色改變

    這篇文章主要為大家詳細(xì)介紹了Opencv圖像處理之輪廓外背景顏色改變,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++中的異常處理機(jī)制詳解

    C++中的異常處理機(jī)制詳解

    本文給大家分享的是C++中的異常處理機(jī)制。對(duì)如何處理異常、基本異常語(yǔ)法、異常保護(hù)代碼等進(jìn)行了探討,推薦給大家。
    2017-04-04
  • 使用VSCode和VS2017編譯調(diào)試STM32程序的實(shí)現(xiàn)

    使用VSCode和VS2017編譯調(diào)試STM32程序的實(shí)現(xiàn)

    這篇文章主要介紹了使用VSCode和VS2017編譯調(diào)試STM32程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論