程序员如何用代码的方式过中秋?看看这170行代码写的中秋游戏

程序员没有诗人那么的满腹经纶,能吟诗作曲,写出“明月几时有?把酒问青天。”的千古诗文;

没有达官贵人那般隆重庆祝,花费重金装饰庭院,摆满灯笼饰品,端上精美小盒的月饼、水果,美美享受中秋佳节。

但是,程序员的中秋,有代码相伴,一行行代码仿若诗词,显示出来的效果也是惊艳绝伦,下面带领大家,看看程序员如何用代码的方式过中秋吧!

今天我们要实现的月饼程序实际效果如下:

中秋佳节,月饼怎能少。其中月饼有各种各样的口味,绿豆味月饼、柠檬味月饼、蛋黄味月饼、莲蓉味月饼等等。

这是一款玉兔吃月饼的游戏。其中,各种月饼会随机从上方掉落,每一种月饼都有不一样的分数值,我们可以通过点击各种月饼吃掉它,来让兔兔获取分数。中秋佳节跟家里弟弟妹妹一起玩玩你亲手做出来的吃月饼游戏,不亦说乎。

不过在正式开始敲代码之前,我们还是要有所准备:

编译器:VS2019/2022【可选VC6.0,VScode(需要自己搭配环境)】

图形库插件:easyX图形库插件(可在我粉丝群文件直接下载)

需要准备的图片+音频素材:(文末获取)

准备好所有的东西之后,我们就来写代码吧!!

上面是必须要用到的一些头文件,大家千万不要因为缺少头文件导致程序报错二焦灼。

附带本项目教程:【中秋快乐】用C语言175行代码写出“月饼大作战”,向爸妈展示自己C语言学习成果的时候到了!_哔哩哔哩_bilibili多谢大家的支持,提前祝大家【中秋快乐,阖家欢乐】,也希望大家能在视频中获取到对自己有用的知识!粉丝C/C++编程学习QQ群:875887616(群里免费问题解答/编程学习软件/基础教程/资料免费下载), 视频播放量 329、弹幕量 10、点赞数 15、投硬币枚数 4、收藏人数 13、转发人数 3, 视频作者 C语言编程爱好者, 作者简介 C/C++编程粉丝群:875887616,视频、素材、PDF、资源文件等你下载~ ,相关视频:C语言游戏开发教程:大鱼吃小鱼(捕鱼达人)!程序员245行代码带你写出经典游戏,这样的C语言谁不爱?,【计算机系】大学怎么样才算“不白读”?早看早知道!,C语言项目实战:贪吃蛇(详细教程)!C语言入门级游戏,学会了这个项目证明C语言的基础知识你就全部掌握了!,用Revit给大家建个中秋月饼的模型,祝大家中秋快乐!BIM建族小教程,【C/C++编程项目】月饼大作战!中秋到了,看程序员手拿月饼写代码,156 行代码轻松开发C语言小游戏!,舒适!!!使用VSCode写51单片机代码,有三种人,注定学不会编程!,翁恺C语言,教室装逼代码,C语言项目:飞机大战【最全教程】超详细教程带你从 0 开始做出飞机游戏!icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Rd4y1g7iD?spm_id_from=333.999.0.0下面就是我们全部的源码展示了:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
#include <time.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")  //加载静态库
#define MAX 15
IMAGE background;
IMAGE moon[2];
int count[4];
struct Moon
{
	int x;				//字母的x坐标
	int y;				//字母的y坐标
	int type;			//存储当前字母
	int speed;
}; 
struct Moon moonCake[MAX];
void loadResource()
{
	loadimage(&background, "img/background.jpg");
	loadimage(moon+0, "img/月饼_y.jpg", 300, 300);
	loadimage(moon+1, "img/月饼.jpg", 300, 300);
}
void drawMoonCake(struct Moon moonCake) 
{
	int j = moonCake.type % 2;
	int i = moonCake.type / 2;
	int w = moon[i].getwidth() / 2;
	int h = moon[i].getheight() / 2;
	int xx = j * w;
	int yy = i * h;
	putimage(moonCake.x, moonCake.y, w, h, moon + 0, xx, yy,SRCAND);
	putimage(moonCake.x, moonCake.y, w, h, moon + 1, xx, yy,SRCPAINT);
}
void initMoonCake(struct Moon moonCake[], int index)
{
	moonCake[index].x = rand() % 6*200 + 200;
	moonCake[index].y = rand() % 401 - 600;	
	moonCake[index].type = rand()%4; 
	moonCake[index].speed = rand() % 15 + 1;
}

void outtextxy_result(int x, int y, int count[])
{
	settextstyle(25, 0, "FZZJ-XHFTJW");
	setbkmode(TRANSPARENT);
	const char* p[4] = { {"水果味月饼数:"},{"柠檬味月饼数:"},
		{"绿豆味月饼数:"},{"豆沙味月饼数:"}};
	for (int i = 0; i < 4; i++) 
	{
		char str[50] = "";
		sprintf(str, "%s%d", p[i], count[i]);									
		outtextxy(x, y, str);
		y += 30;
	}
}
DWORD WINAPI playMusic(LPVOID lpvoid)
{
	mciSendString("close img/爆炸.mp3", 0, 0, 0);
	mciSendString("open img/爆炸.mp3", 0, 0, 0);
	mciSendString("play img/爆炸.mp3 wait", 0, 0, 0);
	mciSendString("close img/爆炸.mp3", 0, 0, 0);
	return 0;
}
int Timer(int duration) 
{
	static int start = 0;
	int end = clock();
	if (end - start > duration) 
	{
		start = end;
		return 1;
	}
	return 0;
}
void keyDown()
{
	BeginBatchDraw();
	//enum MoonType {Fruits,Lemon,Nung,Puree};
	while (1) 
	{
		putimage(0, 0, &background);
		for (int i = 0; i < MAX; i++)
		{
			drawMoonCake(moonCake[i]);
			if (moonCake[i].y >= background.getheight())
			{
				initMoonCake(moonCake, i);
			}
		}	
		if (Timer(50)) 
		{
			for (int i = 0; i < MAX; i++)
			{
				moonCake[i].y += moonCake[i].speed;
			}
		}
		if (_kbhit())
		{
			int userKey = _getch();
			switch (userKey) 
			{
			case 'F':
			case 'f':
				userKey = 0;
				break;
			case 'L':
			case 'l':
				userKey = 1;
				break;
			case 'N':
			case 'n':
				userKey = 2;
				break;
			case 'P':
			case 'p':
				userKey = 3;
				break;
			}
			//暂停
			if (userKey == ' ')
			{
				//让他陷入输入的死循环,直到下次按下是空格
				while (_getch() != ' ');
			}
			//退出
			if (userKey == '\r')
			{
				break;
			}
			//玩游戏
			for (int i = 0; i < MAX; i++)
			{
				if (userKey == moonCake[i].type)
				{
					initMoonCake(moonCake, i);
					count[userKey]++;
					CreateThread(NULL, NULL, playMusic, NULL, NULL, NULL);
					break;			//每次只消除一个
				}
			}
		}
		outtextxy_result(1200, 600,count);
		FlushBatchDraw();
	}	
	EndBatchDraw();
}

int main()
{
	//srand(80);  含义用来确定范围的 80-正整数范围
	srand((unsigned int)time(NULL));	//随机函数绑定时间	
	loadResource();
	initgraph(background.getwidth(), background.getheight());				 //创建窗口
	//初始化每一个字母的属性
	for (int i = 0; i < MAX; i++)
	{
		initMoonCake(moonCake, i);
	}
	keyDown();
	//系统推出时候需要保存
	closegraph();						 //关闭窗口
	return 0;
}

大家快跟着源码去实现你的“月饼大作战”吧!


学习C语言/C++编程可以看看博主B站账号学习哟:

C语言编程__Plus的个人空间_哔哩哔哩_BilibiliC语言编程__Plus,素材源码来C/C++粉丝群:875887616;公众号:C语言编程学习基地;C语言编程__Plus的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。icon-default.png?t=N7T8https://space.bilibili.com/525280593

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值