赛车游戏简单单车C语言版

news2025/1/15 6:33:40
#include<stdio.h>
#include<easyx.h>
#include<time.h>


#define WIDTH 512
#define HEIGHT 768

//定义一个汽车类
struct FCar
{
	//坐标
	float x, y;
	// 汽车种类
	int type;
	//汽车速度
	float speed;
};

//定义全局变量 图片坐标
IMAGE BG_IMG;
//背景图片坐标
float BG1_Y, BG2_Y;
//定义汽车图片
IMAGE CAR_IMG[4][2];
//定义一个汽车
FCar car1;

//初始化游戏(初始化一些数据,加载图片)
void InitGame();
//绘制游戏
void DrawGame();
//更新游戏
void UpdateGame();

int main()
{
	//初始化随机数种子
	srand(time(NULL));
	HWND hWnd=initgraph(WIDTH, HEIGHT);
	//1.77 标准横屏 640 360
	//窗口标题
	SetWindowText(hWnd,TEXT("精品赛车"));
	InitGame();
	while (TRUE)
	{
		DrawGame();
		UpdateGame();
	}
	return 0;
}

void InitGame()
{
	BG1_Y = 0;
	BG2_Y = -HEIGHT;
	
	//加载背景图片
	loadimage(&BG_IMG,TEXT("assets/Background.jpg"));
	//加载汽车图片
	loadimage(&CAR_IMG[0][0], TEXT("assets/Car00.jpg"));
	loadimage(&CAR_IMG[0][1], TEXT("assets/Car01.jpg"));
	loadimage(&CAR_IMG[1][0], TEXT("assets/Car10.jpg"));
	loadimage(&CAR_IMG[1][1], TEXT("assets/Car11.jpg"));
	loadimage(&CAR_IMG[2][0], TEXT("assets/Car20.jpg"));
	loadimage(&CAR_IMG[2][1], TEXT("assets/Car21.jpg"));
	loadimage(&CAR_IMG[3][0], TEXT("assets/Car30.jpg"));
	loadimage(&CAR_IMG[3][1], TEXT("assets/Car31.jpg"));
	//初始化car1
	car1.x = 128+rand()%(256-40);//0~255-40
	car1.y = 0;
	car1.type = rand()%4;
	car1.speed = 0.3;

}

void DrawGame()
{
	//双缓冲贴图(一帧一帧显示)
	BeginBatchDraw();
	cleardevice();
	//输出背景图片
	putimage(0, BG1_Y, &BG_IMG);
	putimage(0, BG2_Y, &BG_IMG);
	//设置线条样式
	setlinestyle(PS_DASH,3);
	//画线
	line(128, 0, 128, HEIGHT);
	line(128+256, 0, 128+256, HEIGHT);
	//显示car1车
	putimage(car1.x, car1.y, &CAR_IMG[car1.type][0], SRCPAINT);
	putimage(car1.x, car1.y, &CAR_IMG[car1.type][1], SRCAND);
	//图片从缓冲区中拿出来
	EndBatchDraw();
}

void UpdateGame()
{
	BG1_Y+=0.2;
	BG2_Y+=0.2;
	if (BG1_Y >= HEIGHT)
	{
		BG1_Y = -HEIGHT;
	}
	if (BG2_Y >= HEIGHT)
	{
		BG2_Y = -HEIGHT;
	}
	
		//控制车辆移动
		if (GetAsyncKeyState(VK_UP))//获取异部键盘状态
		{
			car1.y -= car1.speed;
		}
		if (GetAsyncKeyState(VK_DOWN))
		{
			car1.y += car1.speed;
		}
		if (GetAsyncKeyState(VK_LEFT))
		{
			if (car1.x > 128)
				car1.x -= car1.speed;
		}
		if (GetAsyncKeyState(VK_RIGHT))
		{
			if (car1.x < 128 + (256 - 40))
				car1.x += car1.speed;
		}
	
	
}

注意:当上下左右键不好用关掉电脑管家,否则会电脑管家会想删掉写的程序

可直接点x64下.exe运行或者运行.sln

该小游戏需要安装easyx图形库,自行到官网安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SV学习——数据类型(1)

文章目录 1. 内建数据类型2. 用户自定义3. 枚举类型 1. 内建数据类型 SV中引入新的数据类型logic&#xff0c;SV作为侧重于验证的语言&#xff0c;并不十分关切logic对应的逻辑应该被综合位寄存器还是线网&#xff0c;因为logic被使用的场景如果是验证环境&#xff0c;那么它只…

AI对比:ChatGPT与文心一言的异同与未来

文章目录 &#x1f4d1;前言一、ChatGPT和文心一言概述1.1 ChatGPT1.2 文心一言 二、ChatGPT和文心一言比较2.1 训练数据与知识储备2.2 语义理解与生成能力2.2 应用场景与商业化探索 三、未来展望3.1 模型规模与参数数量不断增加3.2 多模态交互成为主流3.3 知识图谱与大模型的结…

如何在 Ubuntu / Raspbian 上安装 MariaDB

Raspberry Pi OS&#xff08;原为Raspbian&#xff09;是为树莓派基于Debian开发的操作系统。 从2015年起&#xff0c;树莓派基金会正式将其作为树莓派的官方操作系统。 Raspbian是由Mike Thompson和Peter Green创建的一个独立项目。第一个版本于2012年6月发布&#xff0c;至…

Unity中实现捏脸系统

前言 目前市面上常见的捏脸一般是基于BlendShapes和控制骨骼点坐标两种方案实现的。后者能够控制的精细程度更高&#xff0c;同时使用BlendShapes来控制表情。 控制骨骼点坐标 比如找到控制鼻子的骨骼节点修改localScale缩放&#xff0c;调节鼻子大小。 BlendShapes控制表…

modelscope下载模型

# 私有模型下载&#xff0c;前提是您有响应模型权限 方法1 git lfs install git clone http://oauth2:your_git_tokenwww.modelscope.cn/<namespace>/<model-name>.git 如何获取git token 用您的账号登录https://www.modelscope.cn &#xff0c;在个人中心->访…

10本审稿及出版效率均较好的医学SCI期刊参数分享!

常笑医学整理了适合医务工作者进行论文投稿的医学SCI期刊&#xff0c; 审稿及出版效率均较好&#xff0c;附期刊详细参数&#xff0c;供大家参考。 1.CLINICAL CHEMISTRY AND LABORATORY MEDICINE&#xff08;临床化学与实验医学&#xff09; &#xff08;详细投稿信息请点击刊…

【Java】Maven的安装与配置

初识Maven Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09; 提供了一套依赖管理机制 标准化的…

解决springboot+mybatisplus返回时间格式带T

原因&#xff1a;我service实现类的代码是 Overridepublic Map<String, Object> queryDictPage(Map<String, Object> queryMap) {Map<String,Object> map new HashMap<>();QueryWrapper<Dict> wrapper new QueryWrapper<>(); // …

5G基站节能及数字化管理解决方案

截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5G基站的能耗成为…

系统问题排查定位流程

1. 系统问题排查范围定义 本次交流中描述的故障&#xff0c;主要是指系统级别的故障&#xff0c;对于某个具体的业务功能的故障&#xff0c;不在本次讨论范围内。下面描述的故障定位、排查&#xff0c;主要是指跨模块、跨项目级别的故障的定位、排查&#xff0c;包括软件、硬件…

SpringBoot 3.1.7 集成Sentinel

一、背景 我的项目需要引入限流&#xff0c;降级&#xff0c;熔断框架&#xff0c;由于 Spring Cloud 2022.0.4 已经不再支持 Hystrix&#xff0c;Spring Cloud 提供了替代方案&#xff0c;如 Resilience4j&#xff0c;可以使用它来替换 Hystrix。但是网上搜了一下国内Resilie…

烟火识别视频分析系统的应用-河北消防机器人项目

在当前的智能化、信息化时代背景下&#xff0c;河北省消防部门采纳了一项革命性的技术方案 —— 烟火识别视频分析系统&#xff0c;结合消防机器人的使用&#xff0c;大幅提升了火灾预防与应急处理能力。该项目的核心在于通过高精度的视频监控&#xff0c;实时分析识别潜在的火…

96.乐理基础-记号篇-装饰音记号(四)回音

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;95.乐理基础-记号篇-装饰音记号&#xff08;三&#xff09;波音-CSDN博客 理解了波音&#xff0c;再看回音会很简单。 回音&#xff1a;分两种类型 1.顺回音&#xff0c;样子如图1 2.逆回音&#xff0c;样子看图5…

【多线程的安全问题】synchronized 和 volatile——你必须知道的妙用!

&#x1f4c4;前言&#xff1a;本文的主要内容是讨论个人在多线程编程带来的安全问题的表现、原因以及对应的解决方法。 文章目录 一. 了解多线程安全问题二. 线程不安全的现象及原因&#x1f346;1. 修改共享的数据&#xff08;根本原因&#xff09;&#x1f345;2. 原子性&am…

python期末实训-学生成绩管理系统

pythontkintermatplotlib学生管理系统 一.需求分析 读取学生成绩的excel表格到数据库中将学生成绩导出到excel文件中学生成绩单增删改查与展示学生成绩按学号搜索和按姓名模糊搜素展示班级学生的整体成绩情况导出每位学生的成绩分析图将程序打包成exe 二.系统设计 将表格数…

Ubuntu使用docker-compose安装redis

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十三&#xff09;——使用docker-compose安装redis 文章目录 Ubuntu系统环境搭建&#xff08;十三&#xff09;——使用docker-compose安装redis1.搭建文件夹2.docker-compose.yaml配置文件3.redis.co…

如何唯一标识一个进程

如何唯一标识一个进程 进程ID (PID)&#xff1a; 每个运行中的进程都有一个全局唯一的整数标识符&#xff0c;称为进程ID&#xff08;Process ID&#xff09;。PID由内核分配&#xff0c;并在整个系统范围内保持唯一。 在shell中输入echo $$来查看当前shell的进程ID&#xf…

Java 基于 SpringBoot+Vue 的社区团购系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

《Linux C编程实战》笔记:信号的捕捉和处理

Linux系统中对信号的处理主要由signal和sigaction函数来完成&#xff0c;另外还会介绍一个函数pause&#xff0c;它可以用来响应任何信号&#xff0c;不过不做任何处理 signal函数 #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int);可以分解…

拿捏!相关性分析,一键出图!皮尔逊、斯皮尔曼、肯德尔、最大互信息系数(MIC)、滞后相关性分析,直接运行!独家可视化程序!

适用平台&#xff1a;Matlab2020及以上 相关性分析是一种统计方法&#xff0c;用于衡量两个或多个变量之间的关系程度。通过相关性分析&#xff0c;我们可以了解变量之间的相互关系、依赖性&#xff0c;以及它们是如何随着彼此的变化而变化的。相关性分析通常包括计算相关系数…