| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:这个为什么啊?就是把别人的程序改了一下数据,完了就出现问题了。。。
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:4 
这个为什么啊?就是把别人的程序改了一下数据,完了就出现问题了。。。
程序代码:
#include<stdio.h>     //就是飞机在右边界和下边界初夏问题。。。看不出来。。。
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

int map[60][50],oldmap[60][50];
clock_t Now_Time=clock();

void HideCursor()     //隐藏光标
{
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(hOut,&cursor_info);
}

void gotoxy(int x,int y)    //移动光标
{
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD loc={x,y};
    SetConsoleCursorPosition(hOut,loc);
}

void drawmap()          //重新绘图
{
    int x,y,j;
    char a;
    for(x = 0;x < 60;x++)
        for(y = 0;y < 50;y++)
        {
            j = map[x][y];
            if(j == 0)
                a = ' ';
            if(j == 1)
                a = '0';
            if(j == 2)
                a = 6;
            gotoxy(x,y);
            if(map[x][y] != oldmap[x][y])
                printf("%c",a);
            oldmap[x][y] = map[x][y];
        }
}

 
void setplane(int x,int y)        //设置飞机
{
    int i,j;
    for(i = 0;i < 60;i++)
        for(j = 0;j < 50;j++)
        {
            if(map[i][j] == 1)
                map[i][j] = 0;
        }
        for(i = y;i < y+3;i++)
            map[x][i] = 1;
        map[x-1][y+1] = 1;
        map[x+1][y+1] = 1;
        map[x-1][y+2] = 1;
        map[x+1][y+2] = 1;
}

 
void main()                    //程序主函数
{
    int x,y,px = 30,py = 30,flag;
    long t1,t2;
    char a;
    system("mode con cols=50 lines=40");
    for(x = 0;x < 60;x++)
        for(y = 0;y < 50;y++)
        {
            map[x][y] = 0;
            oldmap[x][y] = -1;
        }
    HideCursor();
    flag = true;
    Now_Time = clock();
    t1 = Now_Time;
    t2 = Now_Time;
    drawmap();
    while(1)
    {
        Now_Time = clock();
        if(_kbhit())
        {
            a = getch();
            if((a == 'H')&&(py > 0))
                py = py - 1;
            if((a == 'P')&&((py+2) < 49))
                py = py + 1;
            if((a == 'K')&&((px-1) > 0))
                px = px - 1;
            if((a == 'M')&&((px+1) < 59))
                px = px + 1;
            if(a == ' ')
                flag = !flag;
        }
        if(flag)
        {
            setplane(px,py);
            if(Now_Time - t1 > 200)
            {
                if((py-1) >= 0)
                {
                   map[px][py-1] = 2;
                   t1 = Now_Time;
                }
            }
            if(Now_Time - t2 > 30)
            {
                for(x = 0;x < 60;x++)
                    for(y = 0;y < 50;y++)
                        if(map[x][y] == 2)
                        {
                            map[x][y] = 0;
                            if((y-1) >= 0)
                                map[x][y-1] = 2;
                        }
                t2 = Now_Time;
            } 
            drawmap();
        }
    }
}
搜索更多相关主题的帖子: include 
2015-11-11 18:57
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
你并没有看懂某些关键语句的作用导致的。system("mode con cols=50 lines=40");是把屏幕设置成40,50列,而你的 if((a == 'P')&&((py+2) < 49))则是49行,if((a == 'M')&&((px+1) < 59))是59列,出屏幕了,当然屏幕刷新就乱了,修改成if((a == 'P')&&((py+3) < 40))和if((a == 'M')&&((px+3) < 50))就正常了。
这是我今年初刚学c时写的,连px++或px+=1都不会用,写成px = px + 1;

能编个毛线衣吗?
2015-11-11 19:31
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 2楼 wmf2014
那就是如果我就是想设置成60,50的话,是不是只要这样改就行了?system("mode con cols=60 lines=50"),可是好像不行啊。。。

从前风闻有你,现在我亲眼看见你
2015-11-11 19:42
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
system("mode con cols=60 lines=50");

if((a == 'P')&&((py+3) < 50))

if((a == 'M')&&((px+3) < 60))

改成上述代码,运行没问题(在下、右边界必须+3,因为你的飞机的宽、高为3,必须考虑进去才不会出边界。)

能编个毛线衣吗?
2015-11-11 19:54
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 4楼 wmf2014
很感谢!谢谢,不过。。。还有一点小问题,,,我都不好意思问了。。就是他运行的时候会闪烁的厉害,完了就是方向键好像也不管用了。。

从前风闻有你,现在我亲眼看见你
2015-11-11 20:05
快速回复:这个为什么啊?就是把别人的程序改了一下数据,完了就出现问题了。。。 ...
数据加载中...
 
   



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

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