C语言小游戏快速入门--弹跳小球

一、前言

相信很多小伙伴在学习完C语言语法之后就想要做几个小游戏,来练练手。弹跳小球就很适合C语言初学者,甚至你不需要学习到数组的知识就可以上手。为了是游戏有更好的体验,博主还增加了游戏界面和小球的颜色。增加游戏界面是为了后面学习可以打打基础,小球颜色就当是扩充的知识点吧。也不是特别难理解。话不多说,先来体验一下。

弹跳小球

二、弹跳小球的实现

2.1、界面设置

玩游戏的时候肯定需要一个界面跟玩家进行交互,这时候可以提供一个可视化界面供用户选择。按照玩家的选择做出不同的动作。这里只做了一个非常简洁的界面,这个界面以后也会经常出现,因为我会经常沿用这个界面。会了逻辑,你也可以实现不同的界面。


void menu()//菜单
{
	printf("|----------------------|\n");
	printf("|      1.开始游戏      |\n");
	printf("|----------------------|\n");
	printf("|      2.游戏帮助      |\n");
	printf("|----------------------|\n");
	printf("|      3.更新日志      |\n");
	printf("|----------------------|\n");
	printf("|      0.退出游戏      |\n");
	printf("|----------------------|\n");
	printf("\n");
	printf("(温馨提醒:请按照菜单相应的选项选择)");
	printf("\n");
	printf("请输入你的选择:>");

}

实现游戏界面运行结果:

弹跳小球游戏界面

2.2、弹跳逻辑

1、 game.h

该头文件用来保存函数的声明,还有定义的一些宏。为什么会选择宏定义来做呢?是因为可以方便修改和以后程序扩展的需要。当然这里也可以不用宏定义来做,直接给个固定的值就好了。但是博主习惯用宏定义,所以这里就用了宏定义。先说说什么是宏定义吧。(不会具体讲解这个语法点,只讲该弹跳小球具体用到的宏。)所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。在这里我用了#define row 14#define col 30两个普通宏定义来控制x和y方向上的坐标。

#pragma once//防止头文件重复包含
#include<stdio.h>//输入输出头文件//不过我这里并没有用到
#include<windows.h>//windowsAPI//这里用到了更改颜色的函数、控制控制台窗口大小的函数、延迟函数、清屏函数
#include<conio.h>//_getch()头文件

#define row 14//后续碰到row都可以看成是14
#define col 30//后续看到col都可以看成是30

void HideCursor();//隐藏光标函数
void update();//菜单更新日志
void game_help();//游戏帮助
void play_game();//开始游戏
void menu();//游戏菜单

2、 game.c

该.c文件用来保存一些函数的定义。这里博主写的函数定义也好函数声明也好都是从下往上写的,也就是说博主把main函数放在了后面,因为函数的实现在main函数前面,所以也可以不声明,但是为了防止出差错,所以博主还在前面给函数声明了。

#include"game.h"


void HideCursor()//隐藏光标函数
{
	CONSOLE_CURSOR_INFO cursor;
	cursor.bVisible = FALSE;
	cursor.dwSize = sizeof(cursor);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorInfo(handle, &cursor);
}

static void update_menu()//更新日志菜单
{
	printf("(暂无)\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("(按1返回,按任意键退出)\n");
	printf("请选择:>");
}
void update()//更新日志
{
	update_menu();
	switch (_getch())
	{
	case '1':
		break;
	default:
		exit(0);
		break;
	}
}
static void game_help_menu()//游戏帮助菜单
{
	printf("\n");
	printf("游戏操作:\n");
	printf("\n");
	printf("①:简单观看小球\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("(按1返回,按任意键退出)\n");
	printf("请选择:>");
}
void game_help()//游戏帮助
{
	game_help_menu();
	switch (_getch())
	{
	case '1':
		break;
	default:
		exit(0);
		break;
	}
}
void play_game()//开始游戏
{
	    HideCursor();
		int y = 5;
		int x_v = 1;
		int y_v = 1;
		int x = 0;
		int left = 0;
		int right = col;
		int top = 0;
		int bottom = row;
		while (1) 
		{
			 x = x + x_v;
			 y = y + y_v;
			 system("cls");
			for (int i = 0; i < x; i++)
			{
				printf("\n");
			}
			for (int j = 0; j < y; j++)
			{
				printf(" ");
			}
			system("color 04");
				printf("●\n");
				Sleep(50);
				if (x==bottom||x==top)
				{
					x_v = -x_v;
				}
				if (y==left||y==right)
				{
					y_v = -y_v;
				}
		}
}
void menu()//菜单
{
	printf("|----------------------|\n");
	printf("|      1.开始游戏      |\n");
	printf("|----------------------|\n");
	printf("|      2.游戏帮助      |\n");
	printf("|----------------------|\n");
	printf("|      3.更新日志      |\n");
	printf("|----------------------|\n");
	printf("|      0.退出游戏      |\n");
	printf("|----------------------|\n");
	printf("\n");
	printf("(温馨提醒:请按照菜单相应的选项选择)");
	printf("\n");
	printf("请输入你的选择:>");

}

3、 test.c

该.c文件就是用来实现函数调用的逻辑

#include"game.h"

int main()
{
	SetConsoleTitle("弹跳小球游戏");
	//控制台窗口菜单栏的字
	system("mode con cols=32 lines=16");
	//控制台的大小,这里可以按需要自己设置
	do
	{
		system("cls");//清屏函数
		menu();//菜单
		switch (_getch())//_getch()可不用按回车
		{
		case '1':
			system("cls");
			play_game();//开始游戏
			break;
		case '2':
			system("cls");
			game_help();//游戏帮助
			break;
		case '3':
			system("cls");
			update();//更新日志
			break;
		case '0':
			exit(0);//退出游戏
			break;
		default:
		//这里博主增加了一个消息机制来实现玩家误操作的提醒
			MessageBox(NULL, "输入有误,请重新输入", "提示", MB_OK);
			break;
		}
	} while ('0');
	return 0;
}

游戏运行截图

在这里插入图片描述

三、总结

除做小游戏外,更重要的是锻炼编程思想,以备将来做更大的程序。

弹跳小球

  • 34
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟凌凌漆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值