【C语言】——实现鼠标与画布(黑框)交互,根据鼠标移动,进行你所想要的个性体验

简介: 在之前的学习内容中,我们学习了使用键盘控制我们的代码小游戏,硬件也不只有键盘吧,还缺啥?那肯定是我们的鼠标,键盘的交互,我们使用了下面这种类型的代码,进行AWSD移动操作,十分简单。而我们今天的鼠标,也同样简洁易懂。

前言:

 

在之前的学习内容中,我们学习了使用键盘控制我们的代码小游戏,硬件也不只有键盘吧,还缺啥?那肯定是我们的鼠标,键盘的交互,我们使用了下面这种类型的代码,进行AWSD移动操作,十分简单。而我们今天的鼠标,也同样简洁易懂image.gif编辑

voidupdateWithInput()
{
charinput;
if(kbhit()) 
    {
input=getch();
if(input=='a')
        {
position_y--;
        }
    } 
}

image.gif

相关代码

定义鼠标消息

MOUSEMSG m;

image.gif

检测当前是否有鼠标信息

(到这一块就比较熟悉了,与检测键盘输入类似)

if (m.uMsg==WM_MOUSEMOVE)
        {
putpixel(m.x, m.y, WHITE);        //跟随鼠标移动位置画白点        }
elseif (m.uMsg==WM_LBUTTONDOWN)
        {
rectangle(m.x-5, m.y-5, m.x+5, m.y+5);    //左键画方        }
elseif (m.uMsg==WM_RBUTTONUP)
        {
circle(m.x, m.y, 10);                             //右键画圆        }

image.gif

m.uMsg == WM_LBUTTONDOWN

m.uMsg == WM_RBUTTONUP

则是与鼠标左右点击进行相应操作

这个过程也可以运用于弹跳的小球,控制挡板运动

voidupdateWithInput()                  //与用户输入有关的更新{
MOUSEMSGm;
if (MouseHit())
    {
m=GetMouseMsg();
if (m.uMsg==WM_MOUSEMOVE)
        {
bar_x=m.x;
bar_y=m.y;
bar_left=bar_x-bar_width/2;
bar_right=bar_x+bar_width/2;
bar_top=bar_y-bar_high/2;
bar_bottom=bar_y+bar_high/2;
        }
elseif (m.uMsg==WM_LBUTTONDOWN)      //左键初始化小球位置为挡板上面中心        {
bx=bar_x;
by=bar_top-radius-3;
        }
    }
}

image.gif

此时就能够实现这样的效果喽

image.gif编辑

今天的知识分享就到这,咱们下期再见!

相关文章
|
28天前
|
编译器 API C语言
C语言与硬件交互:通过I/O端口控制硬件。
C语言与硬件交互:通过I/O端口控制硬件。
35 0
|
4月前
|
传感器 人工智能 物联网
【C 言专栏】C 语言与硬件交互的方法
【5月更文挑战第4天】C 语言在硬件交互中扮演关键角色,主要通过直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射I/O和设备驱动程序开发。挑战包括硬件多样性、实时性要求和错误处理。随着物联网和人工智能发展,C语言与硬件交互的需求增加,未来将面临更多新硬件和技术的挑战。本文旨在帮助读者理解和掌握这一领域的知识,以实现更高效的硬件互动。
138 1
【C 言专栏】C 语言与硬件交互的方法
|
4月前
|
数据采集 安全 调度
【C 言专栏】C 语言与操作系统的交互
【5月更文挑战第1天】C语言在操作系统中扮演核心角色,常用于内核及系统级应用开发。它涉及进程管理(如`fork()`创建进程)、内存分配(`malloc()`、`free()`)、文件操作(`open()`、`read()`等)和设备驱动。C语言允许直接硬件交互,支持进程间通信和文件系统管理,但也带来资源管理、错误处理和可移植性的挑战。在嵌入式系统中,C语言尤为重要。随着技术发展,C语言将继续适应新操作系统和硬件架构,与其他语言融合,推进系统编程进步。
72 0
【C 言专栏】C 语言与操作系统的交互
|
4月前
|
存储 物联网 程序员
C语言与硬件交互
C语言因其低级别特性和高性能在系统编程和硬件交互中广泛应用。它提供内存操作和底层指令调用来直接控制硬件,尤其是在嵌入式系统、操作系统内核和驱动开发中。通过指针操作内存地址实现硬件寄存器的读写,或使用内联汇编调用底层指令,但要注意权限、内存映射、并发问题和硬件差异。文中还给出了简单的读写硬件状态和控制设备的C语言代码示例。在高级应用中,C语言用于编写驱动程序和实时操作系统,是底层开发的关键技能。
|
4月前
|
JSON C语言 数据格式
C语言与lua通过json对象交互
C语言与lua通过json对象交互
96 1
|
4月前
|
C语言
【C语言】扫雷(可展开空白版与鼠标操作版)
【C语言】扫雷(可展开空白版与鼠标操作版)
45 0
|
Linux API C语言
由浅入深C系列五:使用libcurl进行基于http get/post模式的C语言交互应用开发
由浅入深C系列五:使用libcurl进行基于http get/post模式的C语言交互应用开发
|
自然语言处理 C语言 iOS开发
iOS - Swift 与 C 语言交互编程
前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式。 1、基本数据类型 Swift 提供了一些和 C 语言的基本类型如 char,int,float,double 等价的 Swift 基本数据类型。
1392 0
|
7天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。