标题:说明:可以进行正确和错误的统计;三关,可选,不会自动跳关;
取消只看楼主
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
结帖率:100%
已结贴  问题点数:20 回复次数:1 
说明:可以进行正确和错误的统计;三关,可选,不会自动跳关;
说明:可以进行正确和错误的统计;三关,可选,不会自动跳关;
     无输赢判断。
但是在字母落下时,如果出现2个及2个以上的同样字母,比如A,我只要
按一下A,所有的A都会消失了,我知道怎么样优化下。高手教下,谢!
以下是我的代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>


int i,j,lie,right=0,miss=0,sec=1000,jibie;
char a[10][20];
char input;

void move()
{
extern int i,j;
extern char a[10][20];
    for(j=18;j>=2;j--)
        {
            for(i=1;i<=8;i++)
            {
                if(a[i][j-1]!=' ')
                {
                    a[i][j]=a[i][j-1];
                    a[i][j-1]=' ';
                }
            }
        }
}

void star()
{
extern int i;
    printf("          |------------------|\n");
    printf("          |     打字游戏     |\n");
    printf("          |------------------|\n");
star:
    printf("\n请选择游戏级别:①②③");
    jibie=getch();
    if(jibie=='1') sec=3000;
    else if (jibie=='2') sec=2000;
    else if (jibie=='3') sec=500;
    else goto star;
    system("cls");
}

main()
{
    a[0][0]='*';   //制作框架
    a[0][19]='*';
    a[9][0]='*';
    a[9][19]='*';
    for(i=1;i<=8;i++)
    {
        a[i][0]='-';
    }
    for(i=1;i<=8;i++)
    {
        a[i][19]='-';
    }
    for(j=1;j<=18;j++)
    {
        a[0][j]='|';
    }
    for(j=1;j<=18;j++)
    {
        a[9][j]='|';
    }
    for(j=1;j<=18;j++)
    {
        for(i=1;i<=8;i++)
        {
            a[i][j]=' ';
        }
    }
   
    star();
    srand(time(NULL));   //初始化随机数
    while(1)
    {
        while(!kbhit())
        {
        

        
        lie=1+rand()%8;     //随机选择第一行的某一个
        a[lie][1]=rand()%26+65;    //随机给予一个字母
        
        for(j=0;j<=19;j++)        //打印数组
        {
            printf("                      ");
            for(i=0;i<=9;i++)
            {
                printf(" %c",a[i][j]);
            }
            printf("\n");
        }
        
        for(i=1;i<=8;i++)        //计算Miss数量
        {
            if(a[i][18]!=' ')
            {
                miss++;
                a[i][18]=' ';
                printf("\a");
            }
        }
        printf("正确:%d\n",right);
        printf("Miss:%d\n",miss);
        Sleep(sec);      //等待()毫秒
        system("cls"); //清屏
        
        move();
        }
        
        input=getch();                  //计算正确数量
        for(j=1;j<=18;j++)
        {
            for(i=1;i<=8;i++)
            {
                if(a[i][j]==input||a[i][j]+32==input)
                {
                    right+=1;
                    a[i][j]=' ';
                }
            }
        }



       }
}
搜索更多相关主题的帖子: help 
2009-08-09 16:18
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
得分:0 
以下是引用soler在2009-8-9 18:28的发言:^_^,试了一下,还不错,不过好像是随便按键,只要按到那个字母就会消除,而miss好像不计数的。有时间我也写个玩玩。没明白你问的是啥?是想按下A,屏幕中出现的A全部消失,还是只消失一个。
我的意思是说,比如落下来的字母里面有3个A,那么你按下A键3个A就都消失了,而不是消失一个。不知道怎么改。
2009-08-12 17:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-282102-1-1.html




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

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