在b站刷到了rock老师的视频,于是就跟着做了,攒点经验,学点知识
视频链接:C语言手写天天酷跑_哔哩哔哩_bilibili
今天迟了,就把代码贴上来
明天开始认真写
先上一下到目前为止的效果(只是让窗口动起来了
C语言小小小项目 仿天天酷跑——Day1
然后是代码
/*天天酷跑开发日志(BV1Ca411k7wU)2022.3.11.创建项目2.导入素材实际的开发流程对于初学者来说,从游戏用户界面入手游戏基于“EasyX”图形库开发2022.3.21.创建游戏窗口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老师的视频,加他那个群