用C語言控制鍵盤上的方向鍵

? ? ? ?各位同學,大家好!相信大家在學習C語言的過程中,都和我一樣,經常使用scanf函數來接受字符,數字,這些標準輸入信息,來實現自己設計的程序效果。

? ? ? ?而我突然有一天(對就是今天)我將目光放向了鍵盤上的方向鍵,因為我很好奇,它們算字符嗎?能被scanf函數整除嗎?我們寫的程序能像正真的程序嗎?你們懂我的意思對吧?我想要一個更加有互動感的程序。

在這里我會用一個表達效果簡單的程序,來為你們展示我想要的互動感,我建議你們自己來寫一寫,因為這樣的感受才會更加深刻不是嗎?

接下來我們先放代碼再講:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <conio.h>// 定義顏色常量
#define COLOR_RESET   "\033[0m"//恢復默認值
#define COLOR_GREEN   "\033[32m"//綠色// 設置文本顏色
void set_text_color(const char* color) 
{printf("%s", color);
}// 顯示菜單
void caidan(int is_truth_green, int is_adventure_green){system("cls");  // 清屏if (is_truth_green) {set_text_color(COLOR_GREEN);}printf("1.真心話\n");set_text_color(COLOR_RESET);if (is_adventure_green){set_text_color(COLOR_GREEN);}printf("2.大冒險\n");set_text_color(COLOR_RESET);
}int main() 
{int fangxiang = -1;int is_truth_green = 0;  // 標記真心話是否為綠色,初始為否int is_adventure_green = 0;  // 標記大冒險是否為綠色,初始為否// 首次顯示菜單,無顏色caidan(is_truth_green, is_adventure_green);while (1){fangxiang = _getch();if (fangxiang == 72){  // 向上鍵is_truth_green = 1;  // 真心話變綠is_adventure_green = 0;caidan(is_truth_green, is_adventure_green);}else if (fangxiang == 80) {  // 向下鍵is_truth_green = 0;is_adventure_green = 1;  // 大冒險變綠caidan(is_truth_green, is_adventure_green);}}return 0;
}

? ? ? ? 在這一段代碼中,關鍵是,_getch()函數,它是用于從控制臺中無緩沖的讀取單個字符的函數,它和scanf的區別在于,無緩沖,相較于scanf輸入字符之后還需要按回車鍵,_getch()會直接,接收鍵值,這使得它在需要即使相應的程序中就非常重要,例如游戲中的操作鍵一樣,怎么說比較形象呢?

? ? ? ? 這么說吧!scnaf就像是正式運動之前會熱身的成熟男子,而_getch()就像莽撞的小青年只會橫沖直撞,性急,還沒熱身就出發了。

? ?if (fangxiang == 72)

? ? ? ?在介紹_getch()之后,我們上面這個條件判斷,很簡單,就是判定fangxiang是不是預定的值,而我們預定的值72,代表的什么呢?它其實就是代表著向上鍵,他在系統終端中就是設置好的,但不同的系統對應的值可能也是不一樣的,寫之前可以查一下。

? ? ? ? 當我們明白了_getch()和相對應的鍵值,我們在看代碼就很簡單了,就是用_getch()接收按鍵,然后在創建一個int型變量接收它,來比較鍵值,再分別設置對應結果就完成了。

我在這個基礎上加了點顏色。

// 定義顏色常量
#define COLOR_RESET ? "\033[0m"//恢復默認值
#define COLOR_GREEN ? "\033[32m"//綠色

// 設置文本顏色
void set_text_color(const char* color)?
{
? ? printf("%s", color);
}

? ? ? ? 顏色函數很簡單用printf函數直接將 color中預處理好的轉義字符打印出來,一次打印顏色一次恢復原樣就可以做到設置顏色的效果。

什么是預處理?下次單獨講。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75803.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

特殊的質數肋骨--dfs+isp

1.dfs全排列組數&#xff0c;an記得還原 2.如果范圍確定且只比較質數&#xff0c;isp比線性篩快&#xff0c;主要這個范圍太大了 https://www.luogu.com.cn/problem/P1218 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typed…

定積分的應用(4.39-4.48)

battle cry 前言4.394.404.414.424.434.444.454.464.474.48 前言 題目確實比較多。slow down and take your time. 4.39 狂算了一遍&#xff0c;然后發現不是計算出問題了&#xff0c;是積分上下限寫錯了。還有把函數代進去也出了一點問題。 點火公式一家人我不記得&#x…

如何高效使用 Ubuntu 中文官方網站

Ubuntu 中文官方網站 一、快速導航與核心模塊 首頁焦點區 頂部菜單欄:快速訪問「下載」「文檔」「支持」「商店」等核心功能。輪播圖區:展示最新版本(如 Ubuntu 24.04 LTS)和特色功能(如 Ubuntu Pro 訂閱服務)。搜索框:支持中文關鍵詞搜索(如 "邊緣計算"),…

form實現pdf文件轉換成jpg文件

說明&#xff1a; 我希望將pdf文件轉換成jpg文件 請去下載并安裝 Ghostscript&#xff0c;gs10050w64.exe 配置環境變量&#xff1a;D:\Program Files\gs\gs10.05.0\bin 本地pdf路徑&#xff1a;C:\Users\wangrusheng\Documents\name.pdf 輸出文件目錄&#xff1a;C:\Users\wan…

Spring 核心技術解析【純干貨版】- XVIII:Spring 網絡模塊 Spring-WebSocket 模塊精講

在現代 Web 開發中&#xff0c;實時通信已成為提升用戶體驗的關鍵技術之一。傳統的 HTTP 輪詢方式存在較高的延遲和帶寬開銷&#xff0c;而 WebSocket 作為一種全雙工通信協議&#xff0c;能夠在客戶端和服務器之間建立持久連接&#xff0c;實現高效的雙向數據傳輸。 Spring 框…

VirtualBox安裝FnOS

1.下載FnOS鏡像 下載網址&#xff1a; https://www.fnnas.com/2.創建虛擬機 虛擬機配置如圖所示&#xff08;注意操作系統類型和網卡配置&#xff09; &#xff08;注意啟動順序&#xff09; 3.啟動虛擬機 網卡類型選擇橋接的Virtual Adapter 如果沒有IP地址或者IP地址無法…

java根據集合中對象的屬性值大小生成排名

1&#xff1a;根據對象屬性降序排列 public static <T extends Comparable<? super T>> LinkedHashMap<T, Integer> calculateRanking(List<ProductPerformanceInfoVO> dataList, Function<ProductPerformanceInfoVO, T> keyExtractor) {Linked…

grep命令: 過濾

[rootxxx ~]# grep root /etc/passwd [rootxxx ~]# grep -A 2 root /etc/passwd -A #匹配行后兩行 [rootxxx ~]# grep -B 2 root /etc/passwd -B #匹配行前兩行 [rootxxx ~]# grep -C 2 root /etc/passwd -C #前后2行 [rootxxx ~]# grep -n root /…

二十種中藥果實識別分類系統,Python/resnet18/pytorch

二十種中藥果實識別分類系統,Python/resnet18/pytorch 基于pytorch訓練, resnet18網絡&#xff0c;可用于訓練其他分類問題&#xff0c;也可自己重新訓練 20類中藥材具體包括&#xff1a;(1) 補骨脂&#xff0c;(2) 草豆蔻&#xff0c;(3) 川楝子&#xff0c;(4) 地膚子&…

SpringBoot啟動run方法分析

SpringBoot啟動run方法分析 1.場景引入 在項目啟動的時候&#xff0c;有時候我們需要在啟動的時候&#xff0c;執行一些邏輯。 比如說&#xff0c;項目啟動的時候&#xff0c;我想把一些熱門商品的數據加載到緩存中去&#xff1b; 比如說&#xff0c;自定義了一個netty服務…

Linux信號——信號的處理(3)

信號是什么時候被處理&#xff1f; 進程從內核態&#xff0c;切換到用戶態的時候&#xff0c;信號會被檢測處理。 內核態&#xff1a;操作系統的狀態&#xff0c;權限級別高 用戶態&#xff1a;你自己的狀態 內核態和用戶態 進程地址空間第三次 所謂的系統調用本質其實是一堆…

MySQL篇(四)事務相關知識詳解

MySQL篇(四&#xff09;事務相關知識詳解 MySQL篇(四&#xff09;事務相關知識詳解一、事務的特性&#xff08;ACID&#xff09;原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔離性&#xff08;Isolation&#xff09;持久性&#xff08;…

SpringBoot定時任務深度優化指南

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 SpringBoot定時任務深度優化指南 引言 在分布式系統架構中&#xff0c;定時任務是實現業務邏輯自動化的重要組件。SpringBoot通過Scheduled注解提供了便捷的…

MySQL表結構導出(Excel)

目錄 一、java實現MySQL表結構導出&#xff08;Excel&#xff09; 二、python實現MySQL表結構導出&#xff08;Excel&#xff09; 又到了寫畢設的時候了&#xff0c;計算機專業在寫論文第四章系統設計的時候肯定會遇到和我一樣的難題——要在論文中將數據庫的表結構以表格形式…

Android使用OpenGL和MediaCodec渲染視頻

目錄 一&#xff0c;借助MediaCodec封裝解碼工具類VideoCodec 二&#xff0c;使用OpenGl繪制視頻封裝SoulFilter 一&#xff0c;借助MediaCodec封裝解碼工具類VideoCodec /*** 解碼工具類* 解碼完成后的數據 通過 ISurface 回調出去*/ public class VideoCodec {private ISu…

day39——輸入操作:多值輸入

數組輸入&#xff1a; int main() {//***** 1、多值輸入&#xff08;C&#xff09;/*輸入&#xff1a;3 --> 3個值5 4 9*/int n;cin >> n; //輸入個數const int MAX_SIZE 0xFFFF;//限定最大個數int a[MAX_SIZE];for (int i 0; i < n; i) {//用 n 作控制輸入…

第九課:LoRA模型的原理及應用

文章目錄 Part.01 3種LoRA的使用方式Part.02 5種LoRA的應用方向Part.01 3種LoRA的使用方式 LoRA能夠在家用級設備上訓練,實現對Checkpoint在某些方面的微調使用Lora的三種方式:放置Lora模型到目錄中,然后作為提示詞的一部分輸入。點擊生成按鈕下面的“畫”,然后打開Additio…

Cortex-M3 NVIC可以控制異常向量表的哪些部分

Cortex-M3 的 NVIC(嵌套向量中斷控制器)不直接控制整個異常向量表,但可以管理向量表中與中斷相關的部分行為。以下是 NVIC 對異常向量表的具體控制范圍和相關機制: 1. NVIC 直接控制的部分 NVIC 主要管理 外部中斷(IRQ) 和部分 系統異常 的行為,但對向量表本身的存儲位…

雙向鏈表增刪改查的模擬實現

本章目標 0.雙向鏈表的基本結構 1.雙向鏈表的初始化 2.頭插尾插 3.頭刪尾刪 4.查找與打印 5.在指定位置之前插入數據/在指定位置之后插入數據 6.在指定位置之前刪除數據/在指定位置之后刪除數據 7.銷毀鏈表 0.雙向鏈表的基本結構 本章所實現的雙向鏈表是雙向循環帶頭鏈表,是…

實戰交易策略 篇十四:江南神鷹捕捉熱點和熊市生存交易策略

文章目錄 系列文章捕捉熱點是股市最大的掘金術市場溫度不低于50是熱點產生的必要條件題材的大小和新穎程度決定熱點的持續時間和漲幅炒作熱點的3個階段捕捉熱點的方法與步驟操作實戰案例熊市生存術“熊市最好的做法是離開股市”的說法是一句空話熊市盈利模式:不輕言底部,超跌…