【多线程】在显示屏上输出各种字符

原创 2016年08月29日 10:31:50

程序功能

  • 【1】两个线程:一个线程的功能是按下键盘终止所有的线程执行;另一个线程是不断的向屏幕上输出字符
  • 【2】向屏幕上输出字符的线程,在显示的位置草果屏幕的是时候,要发出报警声音

程序实例

#include <iostream>
#include <Windows.h>
#include <process.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int max1 = 1;
int min1 = -1;
void checkKey(void* p);
void thread1(void* p);
#define getRandom(min,max) (rand()%(int)(max-min+1) + min)///////得到min和max之间的一个数(包括min和max)
bool repeat = true;////为程序重复执行的值
HANDLE hStdOut;
CONSOLE_SCREEN_BUFFER_INFO csbi;

int main()
{
    /*srand (time(NULL));
    while(1)//////测试产生随机数
    {
        cout<<getRandom(1,10)<<endl;
        Sleep(1000L);
    }*/
    hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hStdOut,&csbi);
    CHAR ch = 'A';
    _beginthread(checkKey,0,NULL);
    while(repeat)
    {
        //cout<<"我是主线程"<<endl;
        _beginthread(thread1,0,(void*)(ch++));
        Sleep(1000L);
    }
    return 0;
}
void checkKey(void* p)/////终止用repeat变量控制的线程
{
    _getch();
    repeat = false;
}
void thread1(void* p)
{
    char blockcell = (char)p;
    bool first = true;
    COORD oldcoord,newcoord;
    DWORD result;
    srand(time(NULL));
    newcoord.X = getRandom(0,csbi.dwSize.X-1);
    newcoord.Y = getRandom(0,csbi.dwSize.Y-1);
    while(repeat)
    {
        Sleep(100L);
        if(first)
            first = false;
        else
            WriteConsoleOutputCharacter(hStdOut,&(blockcell),1,oldcoord,&result);
        oldcoord.X = newcoord.X;
        oldcoord.Y = newcoord.Y;    
        newcoord.X = newcoord.X + getRandom(min1,max1);
        newcoord.Y = newcoord.Y + getRandom(min1,max1);
        if(newcoord.X < 0)
            newcoord.X = 1;
        else if(newcoord.X == csbi.dwSize.X)
            newcoord.X = csbi.dwSize.X - 2;
        else if(newcoord.Y < 0)
            newcoord.Y = 1;
        else if(newcoord.Y == csbi.dwSize.Y)
            newcoord.Y = csbi.dwSize.Y - 2;
        else
            continue;
        Beep(((char)p - 'A') * 100,175);
    }
}

结果展示

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级

文件重定向 [java] view plaincopy #include   using namespace std;  ...

引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针

1、引用内部函数绑定机制 #include #include   using namespace std; using namespace std::placeholders;   /...

多线程打印字符

写了一个多线程的打印,如一个线程打印12345,另一个线程打印ABCDE,最后结果是1A2B3C4D5E。 以下是代码及部分测试结果: 打印客户端类:PrinterCilent package ...
  • yunsyz
  • yunsyz
  • 2016年07月01日 17:46
  • 955

04_仿函数、去转义字符、using 别名、智能指针、多线程、断言

目录 一仿函数 二转义字符 三using 别名 与c的typedef相同 四模板元编程 五智能指针 六多线程 七静态断言【目录】一、 仿函数 2 1、 仿函数, 2 二、 转义字符 2 1、 ...

Python小玩具:BMP转字符画(多线程?)

起初是在网上看见了字符动画,左

多线程输出奇偶数

  • 2014年10月29日 10:32
  • 4KB
  • 下载

4-多线程读取解析处理输出

  • 2013年07月16日 15:59
  • 15KB
  • 下载

12864带字库显示屏自定义字符显示CGRAM

关于12864带字库显示屏,所有的显示的集合,满屏汉字显示,自定义字符CGRAM显示,图片显示,视屏显示,滚屏显示,按键菜单选择显示。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【多线程】在显示屏上输出各种字符
举报原因:
原因补充:

(最多只允许输入30个字)