XSF自制库教程1

C++拖拽圆形游戏实现

初始代码

#include"XSF.h"
using namespace XSF;
bool running = true;
int main() {
	XSF_Window window;
	XSF_Window_Init();
	XSF_Window_Create(800, 600, L"窗口", window);
	XSF_Event event;
	XSF_Event_Init(window);
	while (running) {
		while(XSF_PollEvent(event)) {
			switch (event.type) {
				case XSF_EVENT_CLOSE:
				running = false;
				break;
			}
		}
	}
	XSF_Window_Close(window);
	return 0;
}

任务:实现一个拖拽圆形到指定区域胜利

1.双缓冲相关函数

XSF_DoubleBufferBegin(window);//双缓冲开启
XSF_DoubleBufferFlip(window);//双缓冲画面更新

2.绘制圆形相关函数

XSF_DrawCircle(300, 300, 25, window);//直径五十的空心圆绘制在xy300~350
XSF_DrawSolidCircle(50, 50, 25, window);//实心圆

3.绘制文字相关函数

XSF_DrawText(L"win", 390, 300, window);//x390,y(基线)300

4.鼠标键盘事件

			case XSF_EVENT_KEY_DOWN:
				switch (event.key) {
				case XSF_KEY_ESC:
					running = false;
					break;
				case XSF_KEY_ENTER:
					if (win) {
						running = false;
					}
					break;
				default:
					break;
				}
				break;//键盘
			case XSF_EVENT_MOUSE_DOWN:
				if (event.mouse == XSF_MOUSE_LEFT) {
					mis = 1;
				}
				break;
			case XSF_EVENT_MOUSE_UP:
				if (event.mouse == XSF_MOUSE_LEFT) {
					mis = 0;
				}
				break;
			case XSF_EVENT_MOUSE_MOVE:
				if (mis&&!win) {
					XSF_ClearDraw(window);
					XSF_DrawCircle(300, 300, 25, window);
					XSF_DrawSolidCircle(event.mousex - 25, event.mousey - 25, 25, window);//绘制鼠标位置的圆
					if (event.mousex - 25 >= 300 && event.mousey - 25 >= 300 && event.mousex + 25 <= 350 && event.mousey + 25 >= 350) {
						win = 1;
						XSF_ClearDraw(window);
						XSF_DrawText(L"win", 390, 300, window);
						XSF_DrawText(L"按Enter键继续", 350, 320, window);
					}//鼠标位置在中心所以要加减
				}
				break;//鼠标

最终代码

#include"XSF.h"
using namespace XSF;
bool running = true;
bool win = 0;
bool mis = 0;
int main() {
	XSF_Window window;
	XSF_Window_Init();
	XSF_Window_Create(800, 600, L"窗口", window);
	XSF_Event event;
	XSF_Event_Init(window);
	XSF_DoubleBufferBegin(window);//双缓冲开启
	XSF_DrawCircle(300, 300, 25, window);//直径五十的空心圆绘制在xy300~350
	XSF_DrawSolidCircle(50, 50, 25, window);//实心圆
	XSF_DoubleBufferFlip(window);//双缓冲画面更新
	while (running) {
		while (XSF_PollEvent(event)) {
			switch (event.type) {
			case XSF_EVENT_CLOSE:
				running = false;
				break;
			case XSF_EVENT_KEY_DOWN:
				switch (event.key) {
				case XSF_KEY_ESC:
					running = false;
					break;
				case XSF_KEY_ENTER:
					if (win) {
						running = false;
					}
					break;
				default:
					break;
				}
				break;//键盘
			case XSF_EVENT_MOUSE_DOWN:
				if (event.mouse == XSF_MOUSE_LEFT) {
					mis = 1;
				}
				break;
			case XSF_EVENT_MOUSE_UP:
				if (event.mouse == XSF_MOUSE_LEFT) {
					mis = 0;
				}
				break;
			case XSF_EVENT_MOUSE_MOVE:
				if (mis&&!win) {
					XSF_ClearDraw(window);
					XSF_DrawCircle(300, 300, 25, window);
					XSF_DrawSolidCircle(event.mousex - 25, event.mousey - 25, 25, window);//绘制鼠标位置的圆
					if (event.mousex - 25 >= 300 && event.mousey - 25 >= 300 && event.mousex + 25 <= 350 && event.mousey + 25 >= 350) {
						win = 1;
						XSF_ClearDraw(window);
						XSF_DrawText(L"win", 390, 300, window);
						XSF_DrawText(L"按Enter键继续", 350, 320, window);
					}//鼠标位置在中心所以要加减
				}
				break;//鼠标
			}
			XSF_DoubleBufferFlip(window);
		}
	}
	XSF_Window_Close(window);
	return 0;
}

视频教程

XSF自制库教程2_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值