C语言小小小项目 仿天天酷跑——Day1

在b站刷到了rock老师的视频,于是就跟着做了,攒点经验,学点知识

视频链接:C语言手写天天酷跑_哔哩哔哩_bilibili

今天迟了,就把代码贴上来

明天开始认真写

先上一下到目前为止的效果(只是让窗口动起来了

C语言小小小项目 仿天天酷跑——Day1

然后是代码

/*
	天天酷跑开发日志(BV1Ca411k7wU)
	2022.3.1
		1.创建项目
		2.导入素材
		实际的开发流程
		对于初学者来说,从游戏用户界面入手

		游戏基于“EasyX”图形库开发
	2022.3.2
		1.创建游戏窗口
		2.设计游戏背景
			1)三重背景不同速度移动
			2)循环滚动的实现
		3.实现游戏背景
			1)加载背景资源
			2)渲染(坐标:图片左上角相对窗口左上角的位置)
			遇到问题:背景图片的png格式遇到黑色
			解决方式:面向复制黏贴编程,面向百度编程,引入头文件与源文件tools
*/

/*
	构思:
	加入难度系统,不同难度速度与障碍物刷新率不同
	尝试加入二段跳
*/

#include<stdio.h>
//EasyX图形化界面
#include<graphics.h>
//自己写的,引入的头文件,要用""
#include"tools.h"

//游戏窗口大小
#define WIN_WIDTH 1012
#define WIN_HEIGHT 396

//用数组储存三张背景图
//全局变量,大型项目少定义全局变量
IMAGE imgBgs[3];
//背景图片x坐标
int bgX[3];
//背景速度
int bgSpeed[3] = { 1,2,4 };

//初始化
void init() {
	//创建游戏界面
	initgraph(WIN_WIDTH, WIN_HEIGHT);
	
	//加载背景资源
	char name[64];
	for (int i = 0; i < 3; i++) {
		//"res/bg001.png""res/bg002.png""res/bg003.png"
		//sprintf 主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串
		//运行C4996错误,将项目属性 -> C/C++ -> sdl检查调为否
		sprintf(name, "res/bg%03d.png",i+1);
		//使用多字节字符集
		loadimage(&imgBgs[i],name);
		//位置
		bgX[i] = 0;
	}
}

//渲染游戏背景
void updateBg() {
	putimagePNG2(bgX[0], 0, &imgBgs[0]);
	putimagePNG2(bgX[1], 119, &imgBgs[1]);
	putimagePNG2(bgX[2], 0, &imgBgs[2]);
}

//背景滚动
void bgRoll() {
	for (int i = 0; i < 3; i++) {
		bgX[i] -= bgSpeed[i];
		if (bgX[i] < -WIN_WIDTH) {
			bgX[i] += WIN_WIDTH;
		}
	}
}

int main() {
	init();
	while (1) {
		//解决屏幕闪烁问题
		//这个函数用于开始批量绘图。
		//执行后,任何绘图操作都将暂时不输出到绘图窗口上。
		BeginBatchDraw();
		updateBg();
		//直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。
		EndBatchDraw();
		bgRoll();
		Sleep(1);
	}

	system("pause");
	return 0;
}

tools头文件可以去看Rock老师的视频,加他那个群

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值