汇编网首页登录博客注册
240420643的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏

[2010-05-01 17:50] 《c高级编程技术》实验一答案

图片载入中
实验一是写一个程序(废话),控制单词从上面落下,输入正确时单词消失。
写得很乱,大家随便看看吧。(另外关于第二题,只是让我写个菜单吧,就不写了,继续下一章的学习)

/**/

#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>

int ran_words_num();
int ran_x();
void box(int startx,int starty,int width,int heigh);     /*画最外层的两个框*/
main()
{
  int i=0,j=0,temp,key=0,wordx=20,wordy=23,cur_wordx,cur_wordy,wordsx=23,wordsy=7,flag=0,words_num,score=0,down_long=0,guess_count=0;
  char buf[1000*2],buf1[50*2];
  char word[10]="";
  char *words[]={"hello","world","hey","abrupt","accept"};       /*下落的单词*/
  
  textmode(C80);
  textbackground(BLUE);
  textcolor(LIGHTGRAY);
  clrscr();
  box(20,5,40,15);
  box(21,6,38,13);
  gettext(21,6,59,19,buf);
  gettext(wordx,wordy,wordx+10,wordy+1,buf1);
  cur_wordx=wordx;
  cur_wordy=wordy;
  wordsx=ran_x();
  words_num=ran_words_num();
  gotoxy(60,22);
  printf("score:%d",score*10);
  flag=0;
  while(down_long<12)          /*下落循环开始*/
  {
    sleep(1);/*delay(100000000000);*/          /*调节下落速度,大家可以自己调节*/
    puttext(21,6,59,19,buf);
    gotoxy(wordsx,wordsy+down_long);
    printf("%s",words[words_num]);
    down_long++;
    while(bioskey(1))   /*判断是否有按键*/
    {
      key=bioskey(0);
      switch(key)      /*按键的处理*/ 
      {
        case(0x11b):   /*按ESC时退出*/
          exit(0);
        case(0xe08): /*退格符的处理*/
        {
          cur_wordx--;
          gotoxy(cur_wordx,cur_wordy); 
          textcolor(BLUE);
          cprintf(" ");
          cur_wordx--;
          break;
        }
        case(0x1c0d):/*回车键的处理*/
        {
          
          guess_count++;
          puttext(wordx,wordy,wordx+10,wordy+1,buf1);
          if(!strcmp(word,words[words_num]))          
          {
            gotoxy(60,22);                                /*输入正确时的处理*/
            score++;
            printf("score:%d",score*10);
            wordsx=ran_x();
            words_num=ran_words_num();
            down_long=0;
            flag=1;
          }
          cur_wordx=wordx;
          cur_wordy=wordy; 
        }                           /*回车键的处理结束*/
      }                             /*按键处理结束*/
      if(wordx<30)
      { 
      if(flag==0&&key!=0x1c0d)                 /*上面对回车时间进行了处理,这里就不用处理了,不然会出现错误,我找这个错误找了很久,哈哈*/
        {
          textcolor(WHITE);
          gotoxy(cur_wordx,cur_wordy);
          putch(key);
          word[cur_wordx-20]=key&0xff;
          cur_wordx++;
        } 
      else if(flag==1)
      {
        flag=0;
      }
      }
    }/*判断是否有按键结束*/
  }  /*下落循环结束*/
}
int ran_words_num()          /*控制出现哪个单词*/
{
  randomize();
  return random(5);
}
int ran_x()                   /*控制下落单词的横坐标*/
{
  randomize();
  return random(32)+23;
}
void box(int startx,int starty,int width,int heigh)
{
  int i;
  gotoxy(startx,starty);
  putch(0xda);
  for(i=0;i<width-1;i++)
    putch(0xc4);
  putch(0xbf);
  for(i=0;i<heigh;i++)
  {
    gotoxy(startx,starty+i+1);
    putch(0xb3);
    gotoxy(startx+width,starty+i+1);
    putch(0xb3);
  }
  gotoxy(startx,starty+heigh);
  putch(0xc0);
  for(i=0;i<width-1;i++)
    putch(0xc4);
  putch(0xd9);
}
评论次数(0)  |  浏览次数(1036)  |  类型(C语言) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码