圣诞老人的代码

#include<stdio.h>
#include<easyx.h>
#include"tool.h"

//作者李嘉顺
IMAGE imgland;
IMAGE imgTree[10];
IMAGE imgolaman;//老人
IMAGE imgsnow[2];

typedef struct{
	int x, y, w, h;
	int frame;//帧数
	int maxframe;
	int speed;//速度
}sprite;

void sprite_init(sprite* sprite, int x, int y, int maxframe,int w,int h) {//封装
	sprite->x = x;
	sprite->y = y;
	sprite->frame = 0;
	sprite->maxframe = maxframe;
	sprite->w = w;
	sprite->h = h;
	sprite->speed = 1;

}

void sprite_runAnimation(sprite* sprite) {//初始化
	if(sprite->maxframe !=0)
	sprite->frame = (sprite->frame + 1) % sprite->maxframe;
}

sprite tree;
sprite oldman;
sprite snow[50];//雪花

//加载资源
void loadResource() {

	//背景加载图片
	loadimage(&imgland, "resource/land.png", getwidth(), 290);
	//圣诞节树
	for (int i = 0; i < 10; i++) {
		char imgFile[50] = { 0 };
		sprintf_s(imgFile,"resource/mtree/0000%d.png",i);
		loadimage(imgTree + i,imgFile , 300, 300);//这里不可以用i
	}
	//老人
	loadimage(&imgolaman, "resource/oldman.png");

	loadimage(imgsnow + 0, "resource/snow.png");
	loadimage(imgsnow + 1, "resource/snow1.png");

	
}

//初始化
void init() {

	loadResource();
	sprite_init(&tree, 540, 430,10, imgTree->getwidth(), imgTree->getheight());
	//10是帧
	//老人
	sprite_init(&oldman, 700, 600, 7, 220, 154);
	//雪花
	for (int i = 0; i < 50; i++) {

		sprite_init(snow + i, rand() % getwidth(), rand() % getheight(), 11, 23, 32);

	}


}

//绘制图片
void draw() {


	//背景输出
	drawImg(0, 500, &imgland);
	//树动画
	static int i = 0;
	drawImg(700, 430, imgTree + i);
	if (i < 10)
		i++;
	else

		i = 0;
	
	//老人输出
	//putimage(0, 0, &imgolaman);

	//void putimage(int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg,
	//  int srcX, int srcY, DWORD dwRop = SRCCOPY);		// Put image to device

	static  int k = 0;
	drawImg(oldman.x, oldman.y,oldman.w,oldman.h,&imgolaman,oldman.frame*220,0);
	/*if (k < 8)
		k++;
	else
		k = 0;*/
	k = (k + 1) % 7;
	//雪花
	for (int i = 0; i < 50; i++) {
		drawImg(snow[i].x, snow[i].y, snow[i].w, snow[i].h, imgsnow + 0, snow[i].frame*snow[i].w, 0);
		if (snow[i].maxframe);
		snow[i].frame = rand() % snow[i].maxframe;
	}



	Sleep(100);
  }
//shujugexing数据
void update() {

	sprite_runAnimation(&tree);
	sprite_runAnimation(&oldman);

	for (int i = 0; i < 50; i++) {
		sprite_runAnimation(snow+i);
		//雪花落
		
	}
	//老人移动
	oldman.x -= oldman.speed;

	

}


int main() {

	//控制台,绘图
	initgraph(1024, 768, EX_SHOWCONSOLE);
	init();


	BeginBatchDraw();//开始
	while (true) {
		cleardevice();//清屏
		draw();
		FlushBatchDraw();//刷新
		update();
	}
	
	
	
	
    getchar();



	return 0;
}
//贵州电子商务职业技术学院

这个图主要的实现是图片加载,图片绘图,数据更新,和图片输出。

这个因为是c语言所以使用了easyx图形库技术。

相应的素材在我的群里面954311208

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值