UNIX 螢幕導向程式的發展利器 - curses

Slides:



Advertisements
Similar presentations
版 画 制 作版 画 制 作 版 画 种 类版 画 种 类 版 画 作 品版 画 作 品 刘承川.
Advertisements

循理會恩成堂聖餐崇拜 連結修剪結果子 主席 : 吳志恒執事 講員 : 陳鳳雲姑娘 講題 : 我信永生 經文 : 啟示錄二十一 1-4 、 節 [ 聚會時,請將傳呼機和手提電話關掉,多謝合作 ]
教师队伍建设 组员:王英利 赵香媖 侯娟. 主讲内容 2. 中小学教师队伍建设 1. 职业教育师资队伍建设国际比较 3. 高校教师队伍建设与管理.
主讲:王幸民 理学院计算机基础教学部.
1.1 程序和程序设计 程 序:简单的说程序就是指令的集合。 计算机设计语言: 机器语言 :二进制 0 、 1 汇编语言:助记符(英语单词)。 高级语言: 人类自然语言(数学语言 + 英语) 如: C 语言、 Qbasic 、 VB 等 第一章:程序设计基本概念.
第二框 生命科技与生命伦理.
提 纲 三次考察与改革的回顾 1 学院三周来的新面貌 及下一步工作思路 2 凝心聚力、团结协作、狠抓落实 3.
——以通渭县图书馆青树小项目“携老上网游”为例
第 1 章 公共基础知识 第 2 章 Visual Basic程序开发环境 第 3 章 对象及其操作 第 4 章 数据类型及其运算
Windows7操作系统 信息工程系.
市民三小時免費上網線上教學 入門班.
基础模块 模块一 程序设计基础 (一)开发环境部分.
C语言程序设计 主讲教师 :张群燕 电话:
授课教师:江星玲 1.
2013浙江省行测专题 密卷解析及备考冲刺 罗 姮.
九十二年度第二次 會計作業實務座談會 主辦單位:會計室.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
第二节 留 数 一、留数的引入 二、利用留数求积分 三、在无穷远点的留数 四、典型例题 五、小结与思考.
第五节 表格处理 创建表格 表格的编辑与格式化.
第三单元 单元写作学案 确立自信 学习反驳.
管理学基本知识.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
闲言碎语.
二十 石钟山记.
第三章 心理安全 广西师范大学 罗蕾.
營建自動化 -營建管理資訊化 授課老師:劉俊杰 副教授 中華民國89年9月27日.
第四节 重积分的应用 一、平面区域的面积 二、立体体积 三、曲面的面积 四、物体的质量 五、物体的质心 六、物体的转动惯量 七、物体的引力
圖書館新生導覽 圖書館使用秘笈~新鮮人篇 陳孟珠
时间管理 -----高一团体辅导.
第一章 语言文字运用 专题五  挖掘隐含信息,准确实现图文转换.
簡易送審動態案件網 路報送作業操作訓練 資料來源 銓敘部製作 報告人 饒瑞恭 日 期: 101 年 6 月 15 日.
第一章 c语言程序设计基础 任课教师:温荷 Neusoft Institute of Information
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
提高打字技能 —— 键盘规范操作.
第一课 计算机基础知识.
高级语言程序设计 主讲人:陈玉华.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
第四章 C 语言中的输入和输出.
Instructor:Po-Yu Kuo 教師:郭柏佑
第一节 大数定律 一、问题的引入 二、基本定理 三、典型例题 四、小结.
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
東部海岸 馬蘭國小 五年己班 閔芳頤 Enter
運動競賽制度 授課教師:鄭俊傑副教授.
注音輸入法教學 大華技術學院資管系 指導老師:陳信如老師 學生:王麗嵐.
C程序设计.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
輸出與輸入(I/O).
第一章 C语言概述 教师:周芸.
C++程式設計入門 變數與運算子 作者:黃建庭.
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
合歡山 馬蘭國小 五年己班 何宜倞 ENTER.
指数 对数 指数 幂函数举例 对数 幂函数举例.
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第八章: 輸入裝置-鍵盤與滑鼠.
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
第八章 服務部門成本分攤.
幂函数.
靜宜大學專用 PowerPoint 檔案 數位教材
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
| | 那天,I Miss U I Miss PPT宝藏网整理发布- ~ 、 Tab Enter
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
Department of Mechatronic Technology National Taiwan Normal University
Presentation transcript:

UNIX 螢幕導向程式的發展利器 - curses Gwan-Hwan Hwang Dept. CSIE National Taiwan Normal University 2009.11.24

前言 為了因應網路上各式各樣的終端機形態 (terminal), UNIX 上特別發展出一套函式庫, 專門用來處理 UNIX 上游標移動及螢幕的顯示. curses.h 函式庫

curses 的歷史與版本 cureses 最早是由柏克萊大學的 Bill Joy 及 Ken Arnold 所發展出來的. 本文的介紹 以 System V 的 curses 版本為主.

如何在您的程式使用 curses ? 在您的 C 程式的檔頭將 <curses.h> include 進來.當您引進 curses.h這個函式庫後, 系統會自動將 <stdio.h> 和 <unctl.h>一併 include 進 來. 另外, 在 System V 版本中, <terminfo.h> 這個函式庫也將一併include進來. #include <curses.h> main() { : : }

如何編譯(compile) 編輯好程式, 在 UNIX 提示符號下鍵入: % /usr/5bin/cc [file.c] -lcurses ^^^^^^^ 引進 curses.h 這個 library 或 % /usr/5bin/cc [file.c] -lcurses -ltermlib

如何開始我的第一個 curses 程式? 在開始使用 curses 的一切命令之前, 必須先利用 initscr()這個函式來開啟 curses 模式. 在結束 curses 模式前 ( 通常在您結束程式前 ) 也必須以endwin()來關閉 curses 模式. #include <curses.h> main() { initscr(); : : endwin(); }

將平常較常用的一些設定放在一個叫 initial()的函式內 void initial() { initscr(); cbreak(); nonl(); noecho(); intrflush(stdscr,FALSE); keypad(stdscr,TRUE); refresh(); }

游標的控制 move(y,x) getyx(win,y,x) (請注意! 是 y,x 而不是 &y,&x ) 將游標移動至 x,y 的位置 得到目前游標的位置 (請注意! 是 y,x 而不是 &y,&x )

有關清除螢幕的函式 clear() erase() 將整個螢幕清除 (請注意配合 refresh() 使用)

如何在螢幕上顯示字元 echochar(ch):顯示某個字元 addch(ch):顯示某個字元 mvaddch(y,x,ch:在(x,y) 上顯示某個字元相當於呼叫 move(y,x);addch(ch); addstr(str):顯示一串字串 mvaddstr(y,x,str):在(x,y) 上顯示一串字串相當於呼叫 move(y,x);addstr(str); printw(format,str):類似 printf() , 以一定的格式輸出至螢幕 mvprintw(y,x,format,str) 在(x,y) 位置上做 printw 的工作. 相當於呼叫 move(y,x);printw(format,str);

如何從鍵盤上讀取字元 getch():從鍵盤讀取一個字元 (注意! 傳回的是整數值) getstr():從鍵盤讀取一串字元 scanw(format,&arg1,&arg2...):如同 scanf, 從鍵盤讀取一串字元

如何利用方向鍵 curses 將一些如方向鍵等特殊控制字元, 以 KEY_ 為開頭定義在 curses.h KEY_UP 0403 ↑ KEY_DOWN 0402 ↓ KEY_LEFT 0404 ← KEY_RIGHT 0405 → KEY_HOME 0406 Home key KEY_BACKSPACE 0407 backspace KEY_F0 0410 Function keys. KEY_F(n) (KEY_F0+(n)) Formula for f . KEY_NPAGE 0522 Next page KEY_PPAGE 0523 Previous page [TAB] /t [ENTER] /r [ESC] 27 [BACKSPACE] 127

如何改變螢幕顯示字元的屬性 為了使輸出的螢幕畫面更為生動美麗, 我們常須要在螢幕上做一些如反白,閃爍等變化. curses 定義了一些特殊的屬性, 透過這些定義, 我們也可以在 curses 程式裏控制螢幕的輸出變化.

其他常用的一些函式 beep() 發出一聲嗶聲 box(win,ch1,ch2) 自動畫方框 ch1: 畫方框時垂直方向所用字元

視窗的建立 視窗的建立, 以 newwin() 這個函式來完成. 同時, 需宣告此視窗為 WINDOW結構變數. WINDOW *newwin(lines,colums,start_y,start_x); WINDOW *win; win=newwin(10,20,0,0);

多視窗處理函式的格式 這一類函式和一般的基本函式極為類似, 幾乎每一個基本函式都有一個對應的視窗處理函式. 一般將 'w' 加在函式的裡頭作為區別, 'w' 乃 'window' 之意. wmove(win,y,x) 即對 win 這個視窗做 move() 動作. wmove(stdscr,y,x) 相當於 move(y,x)

介紹一些較重要的函式 wmove(win,y,x) touchwin(win) wrefresh(win) mvwaddstr(win,y,x,str) wattron(attr) delwin(win) subwin(win,ny,nx,y,x)

視窗的捲動 scrollok(win,TRUE); 開啟 scrollok(win,FALSE); 關閉