当前位置: 首页 > news >正文

24/03/07总结

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;}}}

相关文章:

  • 清除Mac OS上Xcode占用的空间
  • 第一次捡垃圾
  • 自然语言处理 | 语言模型(LM) 浅析
  • RPC——远程过程调用
  • 蓝桥杯-排序
  • Ajax (1)
  • 即插即用篇 | YOLOv8 引入 NAM 注意力机制 | 《NAM: Normalization-based Attention Module》
  • Kubernetes Operator开发实践
  • ROS2学习(七) Foxy版本ros2替换中间件。
  • php调用guzzlehttp库时出现Segmentation fault的解决方案
  • [密码学]Base64编码
  • 【Kaggle】练习赛《肥胖风险的多类别预测》
  • 【java web】【瑞吉外卖javaweb】踩坑贴不断更新中...
  • 2024 年系统集成项目管理师全套资料
  • 在PyCharm中使用Jupyter Notebooks实现高效开发
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • E-HPC支持多队列管理和自动伸缩
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • js
  • Laravel核心解读--Facades
  • markdown编辑器简评
  • maven工程打包jar以及java jar命令的classpath使用
  • Mocha测试初探
  • Swoft 源码剖析 - 代码自动更新机制
  • 测试开发系类之接口自动化测试
  • 从零搭建Koa2 Server
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 译米田引理
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • elasticsearch-head插件安装
  • MPAndroidChart 教程:Y轴 YAxis
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (02)vite环境变量配置
  • (42)STM32——LCD显示屏实验笔记
  • (6)添加vue-cookie
  • (C++20) consteval立即函数
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (八十八)VFL语言初步 - 实现布局
  • (二)c52学习之旅-简单了解单片机
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (十八)三元表达式和列表解析
  • (十六)一篇文章学会Java的常用API
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Linq学习笔记
  • (转)memcache、redis缓存
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET Core跨平台微服务学习资源
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)