| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2754 人关注过本帖
标题:广征高手意见 关于打字的
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:16 
广征高手意见 关于打字的
从屏幕顶端随机掉落一些字母数字啥的  然后接收键盘信息  和哪个字符相等 则该字符不在掉落(吃掉了)

这个东西在cui下到底能否实现  早年刚接触计算机时 那些打字训练软件都是纯DOS下的

[此贴子已经被作者于2017-12-25 18:31编辑过]

搜索更多相关主题的帖子: 意见 打字 字符 相等 东西 
2017-12-25 18:30
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:34 
dos文本模式下屏幕的大小是 25行*80个字母,显示一个字母随机下落的游戏甚至不用另辟内存空间来存储数据,就可以直接写屏完成.但要做一个即时判断键盘入并终止下落的游戏,恐怕至少需要一个25*80 空间(字节即可)来储存落或不落的flag

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2017-12-25 18:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
写屏 则捏个写法 用中断吗  那windows下的cui 可是无法实现啊

DO IT YOURSELF !
2017-12-25 18:47
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
程序代码:
/*  TC 2.0  XP */


#include <dos.h>
#include <stdlib.h>
#include <time.h>
void newdelay(int limit);     //延时
void SetFirstRowChar(int color);  //设置第一行字符,实际上程序写完我发现可不要,不要效果会更好
void RandSetFlag(int flag[80]);   //设置列随机下落数据
void ColRoll( int ColCount,int RollCount,int color); //列下落
void ColCellRoll( int ColCount,int color); //单个字母下落

int flag[80];  //随机标志
int main()
{

   int i,k;
   randomize();

   SetFirstRowChar(2);
   RandSetFlag(flag);
   for(i=0;i<1000;i++)
   {
       for(k=0;k<80;k++)
       {
           ColRoll( flag[k],flag[k]%25 ==0?random(25):flag[k]%25,2);
           newdelay(2);
       }
       RandSetFlag(flag);
       newdelay(10);
   }
   getch();
}

void SetFirstRowChar(int color)
{

    char far *p;
    int i;
    char c;

    p=(char far *)0xb8000000;

    for( i = 0; i < 80 ; i++)
    {
      c =  random(35);
       if( c > 25 )*(p+i*2) ='';
       else *(p+i*2) =c+65;
       *(p+i*2+1) = color;
    }

    return ;
}

void newdelay(int limit)
{
   unsigned int far *clock=(unsigned int far *)0x0000046CL;
   unsigned int begin;
   begin=*clock;
   while(abs(*clock-begin)<=limit*0.0182);
}

void RandSetFlag(int flag[80])
{
    int i;
    for(i=0;i<80;i++)flag[i] = random(80);

    return;
}

void ColCellRoll( int ColCount,int color)
{
    char far *p;
    char far *p1;
    int i;
    char c;

    p=(char far *)0xb8000000 + ColCount*2;
    p1 = (char far *)0xb8000000 + ColCount*2+80*2;

    for( i = 24 ; i >= 0 ; i--)
    {

      *(p1+i*80*2) =   *(p+i*80*2);
      *(p1+i*80*2+1)=color;
      *(p+i*80*2)='';
      *(p+i*80*2+1) = color;

    }
          c =  random(35);
          if( c > 25 )*p ='';
          else *p =c+65;
          *(p+1) = color;
  return;
}

void ColRoll( int ColCount,int RollCount,int color)
{
    int i;

    for(i = 0; i < RollCount ; i++)
    {

        ColCellRoll( ColCount,color);
    }

    return;
}

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2017-12-25 18:57
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
给自己一个赞先,竟然十几年了还能写几行代码

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2017-12-25 19:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 4楼 Knocker
标记 谢谢

DO IT YOURSELF !
2017-12-25 19:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


红色波浪线处 全是unicode字符  不知道为什么  我所操作的仅仅是将4楼代码复制到我的vs2010下的编辑框内而已

DO IT YOURSELF !
2017-12-26 09:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:34 
回复 7楼 wp231957
说不定他用的是TC,而且直接写显存
2017-12-26 10:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 8楼 rjsp
我知道 最近我复制粘贴代码 老是出现大量的UNICODE 难道是我vs的设置问题

DO IT YOURSELF !
2017-12-26 11:05
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:34 
波浪线处的提示好像是存在中文字符空格造成的,看四楼代码,确实操作显存了,百度到的内存0xb8000000就是显存位置,在控制台下运行debug的"f b800:0000 ff"命令填充这段内存可看到显示变化。
2017-12-26 11:07
快速回复:广征高手意见 关于打字的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020479 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved