喵宗 2022-09-28 18:39 采纳率: 77.8%
浏览 33
已结题

请哪位可以帮帮我解决这个问题

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
int width,high;
int bull_x,bull_y;
int bull_vx,bull_vy;
int position_x,position_y;
int left,right;
int r,course;

void gotoxy(int x, int y) //光标移动到(x,y)位置
{
HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE);
COORD pos;
pos.X =x;
pos.Y =y;
SetConsoleCursorPosition (handle,pos) ;
}
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = FALSE;
cursor.dwSize = sizeof(cursor);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
}
starup() //设置初始值
{
high=30;
width=20;
bull_x=width/2;
bull_y=0;
bull_vx=1;
bull_vy=1;
position_x=width/2;
position_y=high-1;
r=2;
left=position_x-2;
right=position_x+2;
course=0;

  }
show() //用户显示画面
{
    int i,j;
    for(i=0;i<=high;i++)
     {
         for(j=0;j<=width;j++)
         {
             if((i==bull_y)&&(j==bull_x))
             printf("0");
             else if(i==high)
             printf("-");
             else if(j==width)
             printf("|");
             else if((i==position_y)&&(j>=left)&&(j<=right))
             printf("*");
             else
             printf(" ");
         }
         printf("\n");
     }
     printf("得分:%d",course);
}
undatewhihouupput()      //与用户有无的更新
{
    
     static int speed=0,a=10;
    if(speed<a) 
    speed++;
    else if(speed=a)
 {
     bull_x=bull_x+bull_vx;
    bull_y=bull_y+bull_vy;
    speed=0; 
 }
   int upput;
    if(kbhit())
    upput=getch();
    if(upput=='a') 
    { 
    if(left!=0)
        {
            left--;
       right--;
        }
    }
    if(upput=='d') 
    {
        if(left!=15)
    {
            left++;
            right++;
    }
    }
    if((bull_y==high-2)&&(bull_x>=left)&&(bull_x<=right))
{

        bull_vy=-bull_vy;
        course++; 
            
    }
}
undatewhihupput()       //与用户有关的更新
{    


    if((bull_x<0))
    bull_x=0;
    if(bull_x>width)
    bull_x=width;
    if(bull_y<0)
    bull_y=0;
    if(bull_y>high)
    bull_y=high;
    if((bull_x==0)||(bull_x==width))
    bull_vx=-bull_vx;
    if(bull_y==0)
{
    bull_vy=-bull_vy;
    
}
    if(bull_y==high)
    {
        bull_x=width/2;
          bull_y=0;
          course--;
        course--; 
    }

    
}

int main()
{
starup(); //设置初始值
while(1)
{
gotoxy(0,0);
HideCursor();
show(); //用户显示画面
undatewhihouupput() ; //与用户有无的更新
undatewhihupput(); //与用户有关的更新
}
}
为什么显示得分course不是++而是乱加,而--是正常的呢?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月6日
    • 创建了问题 9月28日

    悬赏问题

    • ¥25 LT码在高斯信道下的误码率仿真
    • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
    • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
    • ¥15 电视版的优酷可以设置电影连续播放吗?
    • ¥50 复现论文;matlab代码编写
    • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
    • ¥15 数字图像的降噪滤波增强
    • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
    • ¥15 MSR2680-XS路由器频繁卡顿问题
    • ¥15 VB6可以成功读取的文件,用C#读不了