Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印的c部分在linux上不起作用_C_Linux - Fatal编程技术网

打印的c部分在linux上不起作用

打印的c部分在linux上不起作用,c,linux,C,Linux,该程序应该打印两个麋鹿飞行的两只鸟。当鸟类在同一个地方时,程序应该改变它们的颜色。函数koloruj应该这样做,但它不起作用。仅打印开关的最后一种颜色 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define M_PI 3.14159265358979323846 char tab[30][80]; void czysc() { in

该程序应该打印两个麋鹿飞行的两只鸟。当鸟类在同一个地方时,程序应该改变它们的颜色。函数
koloruj
应该这样做,但它不起作用。仅打印开关的最后一种颜色

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define M_PI 3.14159265358979323846
char tab[30][80];
void czysc()
{
    int i, j;
    for (i = 0; i < 30; i++)
    {
        for (j = 0; j < 80; j++)
        {
            tab[i][j] = ' ';
        }
    }
}
typedef struct
{
    char nazwa[10];
    int wspolrzedna_x;
    int wspolrzedna_y;
} obiekt;

void koloruj (int c)
{
    int i,j;
    switch(c)
    {
    case 0:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[31m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    case 1:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[32m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    case 2:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[33m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    case 3:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[34m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    case 4:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[35m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    case 5:
        for (i = 0; i < 30; i++)
        {
            for (j = 0; j < 80; j++)
            {
                printf("\x1b[36m %c \n", tab[i][j]);
            }
            printf("\n");
        }
        break;
    }
}
void conv1(int mod,int x1 ,int y1)
{
    char znak [3][3] =  {"-.-", "/*\\", "\\./"};
    int n = mod%4;
    switch(n)
    {
    case 0:
        tab[y1][x1] = znak[0][0];
        tab[y1][x1+1] = znak[0][1];
        tab[y1][x1+2] = znak[0][2];
        break;
    case 1:
        tab[y1][x1] = znak[2][0];
        tab[y1][x1+1] = znak[2][1];
        tab[y1][x1+2] = znak[2][2];
        break;
    case 2:
        tab[y1][x1] = znak[0][0];
        tab[y1][x1+1] = znak[0][1];
        tab[y1][x1+2] = znak[0][2];
        break;
    case 3:
        tab[y1][x1] = znak[1][0];
        tab[y1][x1+1] = znak[1][1];
        tab[y1][x1+2] = znak[1][2];
        break;
    }
}
int main()
{
    int x1, x2, y1, y2, a, b, i, j, rx = 18, ry = 8, z = 0, g = 0, c = 0;
    float t1;
    obiekt obiekt_1 = {"ptaszek", x1, y1};
    obiekt obiekt_2 = {"samolot", x2, y2};
    for (a = 0; a<5; a++)
    {
        t1 = 0;
        for (b = 0; b<64; b++)
        {
            x1 = 106 / 2 + rx*cos(t1);
            y1 = 24 / 2 + ry*sin(t1);
            conv1(z, x1, y1);
            x2 = 36/2 + rx*cos(t1+2.6);
            y2 = 24/2 + ry*sin(t1+2.6);
            conv1(g, x2, y2);
            if (x1 = x2)
            {
                if (y1 = y2)
                    c++;
            }
            for (i = 0; i < 24; i++)
            {
                for (j = 0; j < 80; j++)
                {
                    printf ("%c", tab[i][j]);
                }
                printf("\n");
            }
            koloruj(c);
            czysc();

            z++;
            g++;
            t1+ = 0.1;

            usleep (100000);
            system ("clear");
        }
    }
    return 0;
}
#包括
#包括
#包括
#包括
#定义M_PI 3.14159265358979323846
字符标签[30][80];
void czysc()
{
int i,j;
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
表[i][j]='';
}
}
}
类型定义结构
{
查尔纳兹瓦[10];
int wspolrzedna_x;
国际wspolrzedna_y;
}讣告;
void koloruj(内部c)
{
int i,j;
开关(c)
{
案例0:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[310m%c\n”,制表符[i][j]);
}
printf(“\n”);
}
打破
案例1:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[3200万%c\n”,制表符[i][j]);
}
printf(“\n”);
}
打破
案例2:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[3300万%c\n”,表[i][j]);
}
printf(“\n”);
}
打破
案例3:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[3400万%c\n”,制表符[i][j]);
}
printf(“\n”);
}
打破
案例4:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[3500万%c\n”,表[i][j]);
}
printf(“\n”);
}
打破
案例5:
对于(i=0;i<30;i++)
{
对于(j=0;j<80;j++)
{
printf(“\x1b[360m%c\n”,表[i][j]);
}
printf(“\n”);
}
打破
}
}
无效conv1(整数模,整数x1,整数y1)
{
char znak[3][3]={“-.-”,“/*\\”,“\\./”};
int n=mod%4;
开关(n)
{
案例0:
tab[y1][x1]=znak[0][0];
表[y1][x1+1]=znak[0][1];
表[y1][x1+2]=znak[0][2];
打破
案例1:
表[y1][x1]=znak[2][0];
表[y1][x1+1]=znak[2][1];
表[y1][x1+2]=znak[2][2];
打破
案例2:
tab[y1][x1]=znak[0][0];
表[y1][x1+1]=znak[0][1];
表[y1][x1+2]=znak[0][2];
打破
案例3:
表[y1][x1]=znak[1][0];
表[y1][x1+1]=znak[1][1];
表[y1][x1+2]=znak[1][2];
打破
}
}
int main()
{
int-x1,x2,y1,y2,a,b,i,j,rx=18,ry=8,z=0,g=0,c=0;
浮动t1;
obiekt obiekt_1={“ptaszek”,x1,y1};
obiekt obiekt_2={“samolot”,x2,y2};

对于(a=0;a而言,问题在于您的比较:

    if(x1=x2)
    if(y1=y2)
在C语言中,您使用
==
作为比较运算符,在此处进行赋值,其计算结果为赋值的值

此外,您的打印功能可以大大缩短:

void koloruj (int c)
{
     int i,j;
     for(i=0; i<30; i++)
        {
            for(j=0; j<80; j++)
            {
                printf("\x1b[3%dm %c \n", c+1, tab[i][j]);
            }
            printf("\n");
        }
}
void koloruj(int c)
{
int i,j;

对于(i=0;i而言,问题在于您的比较:

    if(x1=x2)
    if(y1=y2)
在C语言中,您使用
==
作为比较运算符,在此处进行赋值,其计算结果为赋值的值

此外,您的打印功能可以大大缩短:

void koloruj (int c)
{
     int i,j;
     for(i=0; i<30; i++)
        {
            for(j=0; j<80; j++)
            {
                printf("\x1b[3%dm %c \n", c+1, tab[i][j]);
            }
            printf("\n");
        }
}
void koloruj(int c)
{
int i,j;


对于(i=0;i您在linux上使用的终端是什么?该程序硬编码用于哪个终端?
math.h
M_PI@richardC规范没有在
math.h
中指定
M_PI
。您的参考资料表明它有什么作用?可能是Linux规范?@chux my bad,我没有检查规范。我只查看了GNU库
glibc
,所以不是Linux(Linux是GNU(项目)的一部分,而不是GNU的一部分)。它是否在其中一个标题中,正如我记得30年前我的老师因为同样的事情责备某人(不使用库中的pi)一样.gcc应该在if语句的括号内使用赋值时给您一个警告。即使在代码编译时也应该查看这些赋值。您在linux中使用的是什么终端?程序硬编码的目的是什么终端?
math.h
defined M_PI@richardC规范没有在
数学中指定
M_PI
.h
。您的参考资料表明它有什么功能?可能是Linux?chux my bad,我没有检查规范。我只查看了GNU库
glibc
,所以不是Linux(Linux是GNU(项目)的一部分,不是Linux的GNU部分)我记得30年前,我的老师因为同样的事情责骂某人(不使用图书馆的圆周率指数),是不是在其中一个标题中.gcc在if语句的括号内使用赋值时应该给您一个警告。最好在代码编译时查看这些赋值。此外,该打印函数的目的似乎是用表中的数据填充80x30终端,但它为每个像素写入空间像素换行符,因此不会形成正确的图像。好的,是的,可能他的终端是我们期望的;)我只是试图解决最初的问题,并展示了一种方法,如何在不改变行为的情况下缩短koloruj。可能还有很多问题需要解决;)现在程序不打印任何内容。@MichałSiwoszek正如我所说,可能有很多错误。还有一个错误是,c不断递增,您可能希望确保它保持在合理的范围内(例如0-5).另一个人的评论也可能是正确的。同样,这个打印功能的目的似乎是用表格中的数据填充80x30终端,但它为每个像素写入空格像素空格换行符,因此不会形成正确的图像。嗯,是的,如果他的终端是我们所期望的,那么可能是;)我只是试图解决最初的问题