收藏 分享(赏)

控制台编程.ppt

上传人:dcs1276 文档编号:7351251 上传时间:2019-05-15 格式:PPT 页数:54 大小:524KB
下载 相关 举报
控制台编程.ppt_第1页
第1页 / 共54页
控制台编程.ppt_第2页
第2页 / 共54页
控制台编程.ppt_第3页
第3页 / 共54页
控制台编程.ppt_第4页
第4页 / 共54页
控制台编程.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、控制台编程,计算机实习,主要内容,1、实例演示 2、系统资源 3、技巧 4、实例讲解,1、实例演示,1、推箱子游戏 2、五子棋 3、俄罗斯方块 4、迷宫 5、汉诺塔游戏,2、系统资源,程序模式1、Character_mode:例如:控制台编程 限制只能按照行列来规划界面,一行80列,每个英文字符占一个位置,每个中文字符占两个位置。基本控制方式是键盘,很难用鼠标控制,2、系统资源,控制台程序1、库文件包括windows常用的数据结构,宏和其他数据类型。2、库文件 包括控制台的键盘输入输出操作。,2、系统资源,相关数据结构1、HANDLE:句柄实际上是一个无符号的整型数,作为窗口的唯一标识ID,控

2、制台的黑屏也是一个窗口,也需要这样的一个HANDLE来标识。,2、系统资源,相关数据结构2、BOOLtypedef int BOOL;3、BYTEtypedef unsigned char BYTE;4、 WORDtypedef unsigned short WORD; 5、DWORDtypedef unsigned long DWORD;,2、系统资源,位操作& | 按位与 按位或 按位取反 按位异或例如: a=11110000 b=00001111a&b = 00000000a | b = 11111111a = 00001111a b= 11111111,2、系统资源,颜色标识(常量)数

3、据结构:WORDFOREGROUND_RED 红色FOREGROUND_GREEN 绿色FOREGROUND_BLUE 蓝色FOREGROUND_INTENSITY 加重BACKGROUND_ RED 红色BACKGROUND_GREEN 绿色BACKGROUND_ BLUE 蓝色BACKGROUND_INTENSITY 加重,文本,背景,2、系统资源,文本颜色的组合 1、黄色?FOREGROUND_RED | FOREGROUND_GREEN 2、青色?FOREGROUND_BLUE | FOREGROUND_GREEN 3、紫色?FOREGROUND_BLUE | FOREGROUND_R

4、ED 4、白色?FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN,2、系统资源,背景颜色的组合 1、黄色?BACKGROUND_RED | BACKGROUND _GREEN 2、青色?BACKGROUND _BLUE | BACKGROUND _GREEN 3、紫色?BACKGROUND _BLUE | BACKGROUND _RED 4、白色?BACKGROUND _RED| BACKGROUND _BLUE| BACKGROUND _GREEN,3、教师和学生协作,1、教师的前期工作头文件 colorConsole.h源文件 colorCon

5、sole.cpp,colorConsole.h,colorConsole.cpp,3、教师和学生协作,2、教师封装的函数1)HANDLE initiate();初始化控制台窗口,并获取该窗口的句柄;该函数只在程序初始化时执行一次。,3、教师和学生协作,2)BOOL textout(HANDLE hOutput, /窗口句柄int x, int y, /窗口横纵坐标 WORD wColors, /指定文本和背景色序列int nColors, /指定颜色序列的数目LPTSTR lpszString ); /指定输出字符串在控制台窗口指定位置输出指定颜色的字符串。,3、教师和学生协作,2)BOOL

6、textout()该函数的限制:参数x,y需要自己验证其合法性,比如y0. 否则系统执行不正常。LPTSTR 类型相当于char*。,3、教师和学生协作,3、常用的系统函数1)bool _kbhit()检测是否有按键按下,系统函数直接调用。该函数是非阻塞函数。,3、教师和学生协作,3、常用的系统函数2)int _getch()获取按键的值,但不在屏幕回显,系统函数直接调用。3)int _getche()获取按键的值,但在屏幕回显,系统函数直接调用。,3、教师和学生协作,4)Sleep(DWORD n)使程序休眠n毫秒,系统函数直接调用。5) void srand(unsigned int se

7、ed )随机数的种子函数。6) int rand()产生伪随机数序列。,如何产生随机数?,#include #include #include void main() srand(time(NULL);for (int i=0; i10; i+) /产生10个随机数coutrand()endl; ,3、技巧编程准备,1、新建工程 工程类别:Win32 Console Application 应用程序:An Empty Project 其他:默认选项 2、添加文件 将ColorConsole.h ColorConsole.cpp文件拷贝到工程当前目录 添加到当前工程 3、新建.cpp文件,编写m

8、ain()函数,1、新建工程工程类别,1、新建工程应用程序类别,2、添加文件,2、添加文件,将ColorConsole.h ColorConsole.cpp拷贝到工程当前目录,然后添加到当前工程,2、添加文件,添加完毕,结果如下图所示。,3、新建.cpp文件,点击“file”new”,弹出下面的窗口,3、新建文件,下面,就可以开始编程了,需要解决的问题?,如果要作一个俄罗斯方块,需要先解决哪些基本问题?1 如何输出任意形状和颜色的方块?2 如何移动这些方块?3 如何用键盘控制移动方式?,3、技巧,1、简单彩色字符串编程步骤:1)初始化获取窗口句柄2)设置颜色3)设置坐标4)输出指定字符串,vo

9、id main(void) HANDLE handle;handle = initiate(); /屏幕初始化 WORD wColors2;wColors0=FOREGROUND_RED| FOREGROUND_INTENSITY;wColors1=FOREGROUND_BLUE|FORGROUNG_GREEN| FOREGROUND_INTENSITY; /设置颜色textout(handle,10,10,wColors,2,“Happy Birthday!”); /输出 ,3、技巧,2、闪烁的彩色文字闪烁原理:1)写一遍彩色文字2)延时200ms3)写一遍空文字4)延时100ms反复该过程

10、,则文字不断闪烁。,void main(void) HANDLE handle;handle = initiate();WORD wColors2;wColors0=FOREGROUND_RED| FOREGROUND_INTENSITY;wColors1=FOREGROUND_BLUE|FORGROUNG_GREEN| FOREGROUND_INTENSITY;while (1)textout(handle,10,10,wColors,2,“Happy Birthday!“);Sleep(200); /延时textout(handle,10,10,wColors,2,“ “);Sleep(1

11、00); ,3、技巧,3、移动的彩色文字移动原理:1)写一遍彩色文字2)延时100ms3)写一遍空文字4)改变坐标位置反复该过程,则文字不断移动。,void main(void) HANDLE handle;handle = initiate();WORD wColors2;wColors0=FOREGROUND_RED| FOREGROUND_INTENSITY;wColors1=FOREGROUND_BLUEFORGROUNG_GREEN| FOREGROUND_INTENSITY;for(int x=0; x65 ; x+)textout(handle,x,10,wColors,2,“H

12、appy Birthday!“);Sleep(100);textout(handle,x,10,wColors,2,“ “); ,3、技巧,4、检测键盘输入检测原理:1)检测是否有按键2)有:键盘处理3)无:屏幕处理反复该过程,则文字不断移动。,void main(void) int x=0; bool flag=false;while(x65)if (_kbhit()_getch();flag=!flag;textout(handle,x,10,wColors,2,“Happy Birthday!“);if (flag)textout(handle,x,10,wColors,2,“Happy

13、 Birthday!“);Sleep(100);textout(handle,x,10,wColors,2,“ “);x+; ,3、技巧,5、输入特殊字符在屏幕输入下面的特殊字符,可以使用word中的插入特殊字符的功能。也可以使用中文输入法的软键盘功能。 ,筛子 俄罗斯方块 ,4、实例讲解,1、指法练习,1、指法练习,全局变量const int TOP = 4;const int LEFT = 10;const int RIGHT = 62;const int BOTTOM = 20;const int TIME = 60;char ch540=0; /产生5行40列随机字符,1、指法练习,1

14、、void init (HANDLE handle)功 能:初始化界面 2、void randCharacter (HANDLE handle)功 能:产生5行40列随机的字符 3、void stat (HANDLE handle) 功 能:统计正确的字符数,并计时。 4、void clearScreem (HANDLE handle)功 能:清屏,重新开始练习 5、int GetTime (HANDLE handle) 功 能:计算练习指法的时间 6、void WinOK (HANDLE handle) 功 能:确认对话框,执行结果,如何保存游戏结果?,1、资源#include #inclu

15、de ,保存文件,void main()int result =125;ofstream savefile(“C:abc.dat”); /打开文件if (!savefile.fail()savefileresultendl; /写数据savefile.close(); /关闭文件,读取文件,void main() ifstream readfile(“C:abc.dat“,ios:nocreate);if (! readfile.fail() char info1023;while (readfile info)cout infoendl;readfile.close(); ,如何加入声音效果

16、?,1、加入多媒体支持库菜单:projectSettings 选择Link标签页,在Object/Module Library中添加 Winmm.lib,如何加入声音效果?,2、添加代码 BOOL sndPlaySound( LPCSTR lpszSound, / .wav声音文件UINT fuSound ); /SND_LOOP反复播放SND_ASYNC异步播放SND_SYNC 同步播放 例如: sndPlaySound(“Windows 登录音.wav“, SND_LOOP|SND_ASYNC);,基本要求,作品的内容可以是下面3种中的任意一种:1、制作一个俄罗斯方块的游戏;2、模拟扫雷的

17、游戏;3、制作一个课件,模拟汉诺塔游戏的过程;,可选课题,学生根据自身的情况,可以自由选择感兴趣的题目,要求 1、写出具体的想法以及预期完成的结果 2、征得指导教师的同意 3、如果题目比较复杂,可以2人一组共同完成,思考,多线程的应用? 网络通信的应用?,上机学习内容(建议),1、第一天熟悉编程环境,学习调试技巧,熟悉PPT上的小例子,熟悉并复习上学期C+的基础知识,包括:1)多文件结构2)文件读写3)函数调用、递归等4)类的相关知识,上机学习内容(建议),2、第二天:拟定一个题目,并开始进行程序设计,包括:1)程序有哪些功能?2)数据存储需要使用什么类型?3)有没有什么算法?4)主程序调用流程,上机学习内容(建议),3、第三天:开始搭建程序框架,并按照程序功能一一实现,记住实现一个功能或一个函数,就要进行测试,测试通过后在继续编写下一个函数,乙方错误累积,调试不下去,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报