24/03/07总结

news2025/1/11 7:10:22

esayx:

贪吃蛇:

#include "iostream"
#include "cmath"
#include "conio.h"
#include "easyx.h"
#include "time.h"
#define NODE_WIDTH	40
using namespace std;
typedef struct {
	int x;
	int y;
}node; 

enum direction		//蛇的方向,上下左右
{
	eUP,
	eDown,
	eLeft,
	eRight
};

void paintGrid(){	//封装函数:绘制直线
	for (int x = 0; x < 800; x += NODE_WIDTH) {
		line(x, 0, x, 600);
	}
	for (int y = 0; y < 600; y += NODE_WIDTH) {
		line(0, y, 800, y);
	}
}

void paintsnake(node* snake, int n) {
	int left, right, top, bottom;
	for (int i = 0; i < n; i++) {
		left = snake[i].x * NODE_WIDTH;
		top = snake[i].y * NODE_WIDTH;
		right = (snake[i].x+1) * NODE_WIDTH;
		bottom = (snake[i].y + 1) * NODE_WIDTH;
		solidrectangle(left, top, right, bottom);
	}
}

node snakeMove(node* snake, int length, int direction) {
	node tail = snake[length - 1];
	for (int i = length - 1; i > 0; i--) {
		snake[i] = snake[i - 1];
	}
	node newhead;
	newhead= snake[0];
	if (direction == 0) {
		newhead.y--;
	}
	else if (direction == 1) {
		newhead.y++;
	}
	else if (direction == 2) {
		newhead.x--;
	}
	else if (direction == 3) {
		newhead.x++;
	}
	snake[0] = newhead;
	return tail;
}

void changeDirection(enum direction* pD) {
	if (_kbhit()!=0) {
		char c = _getch();
		if (c == 'w') {
			if (*pD != eDown)
				*pD = eUP;
		}
		else if (c == 's') {
			if (*pD != eUP)
				*pD = eDown;
		}
		else if (c == 'a') {
			if (*pD != eRight)
				*pD = eLeft;
		}
		else if (c == 'd') {
			if (*pD != eLeft)
				*pD = eRight;
		}
	}
}

node createFood(node* snake, int length) {
	node food;
	int i;
	while (1) {
		food.x = rand() % (800 / NODE_WIDTH);	//[0,19]
		food.y = rand() % (600 / NODE_WIDTH);	//[0,14]
		for (i = 0; i < length; i++) {
			if (snake[i].x == food.x && snake[i].y == food.y)	//判断食物是否与蛇重叠
				break;
		}
		if (i < length)continue;		//重叠
		else break;				//不重叠跳出
	}
	return food;
}

void paintfood(node food) {
	int left, right, top, bottom;
		left = food.x * NODE_WIDTH;
		top = food.y * NODE_WIDTH;
		right = (food.x + 1) * NODE_WIDTH;
		bottom = (food.y + 1) * NODE_WIDTH;
		setfillcolor(YELLOW);
		solidrectangle(left, top, right, bottom);
		setfillcolor(WHITE);
		}

bool isGameOver(node* snake, int length) {		//判断输赢
	if (snake[0].x < 0 || snake[0].x>800/NODE_WIDTH)
		return true;
	if (snake[0].y < 0 || snake[0].y>600 / NODE_WIDTH)
		return true;
	for (int i = 1; i < length; i++)
	{
		if (snake[i].x == snake[0].x && snake[i].y == snake[0].y)
			return true;
	}
	return false;
}

void reset(node* snake, int* plength, enum direction* d) {
	snake[0] = { 5,7 };
	snake[1] = { 4,7 };
	snake[2] = { 3,7 };
	snake[3] = { 2,7 };
	snake[4] = { 1,7 };
	*plength = 5;
	*d = eRight;
}
int main() {
	enum direction d = eRight;
	node snake[100] = { {5,7},{4,7},{3,7},{2,7},{1,7} };
	int length = 5;
	initgraph(800, 600);
	setbkcolor(RGB(164, 225, 202));
	cleardevice();
	srand(unsigned int(time(NULL)));	//食物随机
	node food = createFood(snake, length);
	while(1){
	cleardevice();
	paintGrid();
	paintsnake(snake, length);
	paintfood(food);
	Sleep(150);
	changeDirection(&d);
	node lastTail=snakeMove(snake, length, d);
	if (snake[0].x == food.x && snake[0].y == food.y) {
		if (length < 100) {
			snake[length] = lastTail;
			length++;
			}
		food = createFood(snake, length);
		}
	if (isGameOver(snake, length) == true)
	{
		reset(snake, &length, &d);
		food = createFood(snake, length);
	}
			}
	getchar();
	closegraph();
	
}

图像处理:

#include "iostream"
#include "cmath"
#include "conio.h"
#include "easyx.h"
#include "time.h"
#include "stdlib.h"
using namespace std;

void putransparentImage(int x, int y, const IMAGE* mask, const IMAGE *img) {
	putimage(x, y, mask, SRCAND);
	putimage(x, y, img, SRCPAINT);
	//绘制透明图片的封装函数
}
int main() {
	//IMAGE对象:保存图片的各种信息
	//loadimage(		//加载一个图片文件,将图片信息填充至IMAGE对象中
	//IMAGE* pDstImg,	待填充的IMAGE对象指针
	//LPCTSTR pImgFile,	图片的路径			
	// int nWidth=0,	图片的拉伸宽度,如果参数为0,使用原图宽度
	// int nHeight=0,	图片的拉伸高度,如果参数为0,使用原图高度
	// bool bResize=false	是否调整IMAGE的大小以适应图片 
	// );
	//putimage(	//将image对象中的图片显示在窗体上
	//int dstX,		//绘制位置的xy坐标
	//int dstY,
	//IMAGE *pSrcImg,	//要绘制的IMAGE对象指针
	//DWORD dwRop =SRCCOPY		//三元光栅操作码
	// );
	//三元光栅常用:
	//SRCAND:目标图像=目标图像and源图像
	//SRCPAINT:目标图像=目标图像or源图像
	//默认情况下会用SRCCOPY:目标图像=源图像
	initgraph(1200, 480);
	setbkcolor(WHITE);
	cleardevice();
	IMAGE img;
	IMAGE img2;
	IMAGE img3;
	loadimage(&img, "./background.jpg");
	loadimage(&img2, "./mask.jpg");
	loadimage(&img3, "./bear.jpg");
	putimage(0, 0, &img);
	putimage(530, 180, &img2, SRCAND);
	putimage(530, 180, &img3, SRCPAINT);
	getchar();
	closegraph();
	//三元光栅操作码:剪影图片and绿色背景or黑背景熊主体=熊主题与背景	
	//(通过这样的方式就可以绘制出透明图片了)
	//剪影图片称为掩码
}

 

按键处理:

#include "iostream"
#include "cmath"
#include "conio.h"
#include "easyx.h"
#include "time.h"
#include "stdlib.h"
int main() {
	//EX_MOUSE;		鼠标消息
	//EX_KEY;		按键消息
	//EX_CHAR;		字符消息
	//EX_WINDOW;	窗口消息
	//ExMessage函数,创建消息容器
	//ExMessage msg;
	//如果两种及以上都想要:msg=getmessage(EX_MOUSE|EX_KEY);
	// ExMessage函数内部:
	//鼠标消息交互:
	//bool ctrl	 :1		ctrl是否按下
	//bool shift : 1    shift是否按下
	//bool lbutton :1   鼠标左键是否按下
	//bool mbutton :1   鼠标中键是否按下
	//bool rbutton :1   鼠标右键是否按下
	//short x;			鼠标的x轴坐标
	//short y;			鼠标的y轴坐标
	//short wheel;		鼠标滚轮滚动值,为120的倍数

	//键盘消息交互:
	//BYTE vkcode;		//按键的虚拟键码
	//BYTE scancode;	//按键的扫描码
	//bool extended		:1		//按键是否为扩充位
	//bool prevdown		:1		//按键的前一个状态是否按下

	//字符消息的数据
	//	TCHAR ch;

	//窗口消息的数据
	//WPARAM wParam
	//LPARAM lParam

	//鼠标:
		/*WM_MOUSEMOVE	EX_MOUSE	鼠标移动消息。
		WM_MOUSEWHEEL	鼠标滚轮拨动消息。
		WM_LBUTTONDOWN	左键按下消息。
		WM_LBUTTONUP	左键弹起消息。
		WM_LBUTTONDBLCLK	左键双击消息。
		WM_MBUTTONDOWN	中键按下消息。
		WM_MBUTTONUP	中键弹起消息。
		WM_MBUTTONDBLCLK	中键双击消息。
		WM_RBUTTONDOWN	右键按下消息。
		WM_RBUTTONUP	右键弹起消息。
		WM_RBUTTONDBLCLK	右键双击消息。
		WM_KEYDOWN	EX_KEY	按键按下消息
		WM_KEYUP	按键弹起消息。
		WM_CHAR	EX_CHAR	字符消息。
		WM_ACTIVATE	EX_WINDOW	窗口激活状态改变消息。
		WM_MOVE	窗口移动消息。
		WM_SIZE	窗口大小改变消息。*/

	//键盘:
	//WM_KEYDOWN;	按键按下消息
	//WM_KEYUP;		按键弹起消息
	initgraph(800, 600, EX_DBLCLKS);	//EX_DBLCLKS:支持双击
	setbkcolor(WHITE);
	cleardevice();
	ExMessage msg;
	
	while (1) {
		msg = getmessage(EX_MOUSE);
		switch (msg.message)
		{
		case WM_MOUSEMOVE:
			setfillcolor(BLACK);
			solidcircle(msg.x, msg.y, 2);
			break;
		case WM_LBUTTONDOWN:
			setfillcolor(RED);
			if (msg.ctrl == true)
				solidrectangle(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10);
			else solidcircle(msg.x, msg.y, 10);
			break;
		case WM_RBUTTONDOWN:
			setfillcolor(BLUE);
			if (msg.ctrl == true)
			solidrectangle(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10);
			else solidcircle(msg.x, msg.y, 10);
			break;
		}
	}

}

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

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

相关文章

融资项目——通过OpenFeign在分布式微服务框架中实现微服务的远程调用

1.OpenFeign配置 首先&#xff0c;在需要调用其他的微服务的微服务中引入相关依赖。&#xff08;大多数项目中各微服务需要互相调用&#xff0c;可以直接在每个微服务中引入依赖&#xff09; <!--服务调用--><dependency><groupId>org.springframework.clou…

非科班如何系统自学Python?

在数字化时代&#xff0c;Python如一位“全能选手”在编程语言的舞台上大放异彩&#xff0c;无论是数据科学、网站开发还是人工智能&#xff0c;它都能游刃有余地驾驭各种挑战。正因如此&#xff0c;越来越多的人渴望掌握这门兼具强大功能和优雅简洁的语言。 目录 引言 开始 …

pytorch(四、五)用pytorch实现线性回归和逻辑斯蒂回归(分类)

文章目录 线性回归代码过程准备数据设计模型设计构造函数与优化器训练过程训练代码和结果pytorch中的Linear层的底层原理&#xff08;个人喜欢&#xff0c;不用看&#xff09;普通矩阵乘法实现Linear层实现 回调机制 逻辑斯蒂回归模型损失函数代码和结果 线性回归 代码过程 训…

jumpserver项目配置讲解

下载地址&#xff1a;https://community.fit2cloud.com/#/products/jumpserver/downloads 产品文档&#xff1a;https://docs.jumpserver.org/zh/v3/ [rootbogon ~]# tar -xf jumpserver-offline-installer-v3.9.3-amd64.tar.gz [rootbogon ~]# cd jumpserver-offline-instal…

Python Tkinter GUI 基本概念

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;如果停止&#xff0c;就是低谷&#xf…

【机器学习】实验6,基于集成学习的 Amazon 用户评论质量预测

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;此次代码开源大家可以自行参考学习 有任何疑问或者问题&#xff0c;也欢迎私信博主&#xff0c;大家可以相互讨论交流哟…

Go的安装

一. 下载地址 Go官方下载地址&#xff1a;https://golang.org/dl/ Go中文网&#xff1a;https://go.p2hp.com/go.dev/dl/ 根据不同系统下载不同的包。 二. 配置GOPATH GOPATH是一个环境变量&#xff0c;用来表明你写的go项目的存放路径。 GOPATH路径最好只设置一个&#xff0…

C++ 特殊的类设计

目录 1.请设计一个类&#xff0c;不能被拷贝 2. 请设计一个类&#xff0c;只能在堆上创建对象 3. 请设计一个类&#xff0c;只能在栈上创建对象 4. 请设计一个类&#xff0c;不能被继承 5. 请设计一个类&#xff0c;只能创建一个对象(单例模式) 1.请设计一个类&#xff0c;…

Ant Design Vue 修改Model弹框 样式不生效

今天在使用 Ant Design Vue 组件库中又踩了一个坑 其他的样式都可以更改&#xff0c;唯独更改 Model 弹框组件的样式一直不生效 于是研究了好久才找到样式不生效的原因 最后又折腾了好久&#xff0c;参考了不少资料才得出的解决方案&#xff1a;

蓝桥杯备赛之二分专题

常用的算法二分模板 1. 在数组a[]中找大于等于x的第一个数的下标 //int ans lower_bound(a, a n, x) - a //相当于下方 int l 0, r n - 1; while(l < r) {int mid l r >> 1;if(a[mid] > x) r mid;else l mid 1; } cout << r;2. 在数组a[]中找大于…

CVPR 2022 Oral | Bailando: 基于编舞记忆和Actor-Critic GPT的3D舞蹈生成

目录 测试结果&#xff1a; 02 提出的方法 测试结果&#xff1a; 预测有3个步骤&#xff0c;速度比较慢 02 提出的方法 1. 针对舞蹈序列的VQ-VAE和编舞记忆 与之前的方法不同&#xff0c;我们不学习从音频特征到 3D 关键点序列的连续域的直接映射。相反&#xff0c;我们先让…

基于springboot实现线上阅读系统项目【项目源码+论文说明】

基于springboot实现线上阅读系统演示 摘要 随着社会发展速度的愈来愈快&#xff0c;以及社会压力变化的越来越快速&#xff0c;致使很多人采取各种不同的方法进行解压。大多数人的稀释压力的方法&#xff0c;是捧一本书籍&#xff0c;心情地让自己沉浸在情节里面&#xff0c;以…

基于亚马逊云科技新功能:Amazon SageMaker Canvas 无代码机器学习—以构建货物的交付状态检测模型实战为例深度剖析以突显其特性

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道。 亚马逊云科技 2023 re:Invent 全球大会是亚马逊云科技举办的一场技术盛会&#xff0c;…

数据治理实践——YY 直播业务指标治理实践

目录 一、问题背景 1.1 问题场景 1.2 问题小结 二、治理方案 2.1 治理目标 2.2 团队协同&#xff0c;共建规范 2.3 指标管理的定位 2.4 指标管理的目标及思路 2.5 指标管理&#xff0c;规范内容落地 2.6 数仓设计-关联指标维度 2.7 数据报表开发-配置口径说明 2.8 …

windows重装系统后如何恢复自带的正版office

前言 重装系统后&#xff0c;正版office如何安装 登录微软官网 https://www.microsoft.com 下载office&#xff0c;在已购买的产品中找到Office产品&#xff0c;点击安装,选择默认即可 https://account.microsoft.com/services

信号处理--基于EEG脑电信号处理研究概述

目录 前言 EEG特点 EEG预处理 EEG通道选择 EEG数据增强 EEG 维度降低 EEG特征提取 传统特征提取 深度学习自动提取特征 未来展望 创新的预处理方法 跨被试性能问题 模型融合 参考 前言 脑电信号&#xff08;EEG&#xff09;因其安全性、便携性、易用性、高时间分…

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 CSS常用属性

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 CSS常用属性…

python--宣传篇--personal-qrcode个性二维码

文章目录 准备代码效果 准备 代码 from MyQR import myqr import osdef get_img_qrcode(words, save_name, picture, colorizedTrue):if save_name[-3:] in ["jpg", "png", "gif"]:if picture[-3:] in ["png", "jpg", &qu…

Github 2024-03-08 Java开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9C++项目1非开发语言项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型:OtherStar数量:63556…

Android 性能优化--APK加固(2)加密

文章目录 字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现 本文首发地址&#xff1a;https://h89.cn/archives/212.html 最新更新地址&#xff1a;https://gitee.com/chenjim/chenjimblog 通过 前文 介绍&#xff0c;我们知晓了如何使用代码…