比较c中的表并使用时钟问题

齐姆基西尔

我的障碍物有问题,因为当我尝试将对象的位置与障碍物的位置进行比较时,它不起作用,我正在尝试类似的方法:

int x, y;
        for(x=0; x<24; x++){
            if(tab[2][x]==tab[S.y][S.y]){
            gra=0;
            }
        }

但是当我向下移动时它停止工作,因为我的 y 将是 2 而我不知道如何摆脱它。

我想通过计时器移动我的对象,而不是一直点击箭头,当我想改变我的移动方向时只需按下它们。

utworz_tablice();
    plansza();
    time_t ostatnia_zmiana= clock();
    time_t teraz= clock();
    int gra=1;
    int speed=300;

    while (gra==1){
        while (teraz - ostatnia_zmiana < speed)
        {
            teraz= clock();
            if (kbhit()){
                int c = getch();
                //printf("%d",c);
                if (c==224){
                    c = getch();
                    //printf("%d",c);
                    switch (c){
                        case 72: 
                            if (S.y>0) {
                                S.y--;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 80: 
                            if (S.y>0) {
                                S.y++;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 77: 
                            if (S.x>0) {
                                S.x++;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 75: 
                            if (S.x>0) {
                                S.x--;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                    }
                }
            };
        }
        ostatnia_zmiana= clock();

这是完整的代码:

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <stdlib.h>
#define wysokosc 15
#define szerokosc 25
int **tab;
COORD coord = {0, 0};

void plansza(){
    system("CLS");
    int i, j;
    printf("#");
    for(i=1; i<=szerokosc; i++){
        printf("=");
    }
    printf("#\n");
    for(j=1; j<=wysokosc; j++){
        printf("|");
        for(i=1; i<=szerokosc; i++){
            if(tab[j-1][i-1]==1){
                printf(">");
            }
            else if(tab[j-1][i-1]==2){
                printf("=");
            }
            else if(tab[j-1][i-1]==3){
                printf("|");
            }
            else if(tab[j-1][i-1]==4){
                printf("$");
            }
            else{
                printf(" ");
            }
        }
        printf("|\n");
    }
    printf("#");
    for(i=1; i<=szerokosc; i++){
        printf("=");
    }
    printf("#\n");  
}
struct Statek{
    int x, y;
}Statek;
struct Statek S;

void print(){
    system("CLS");
    coord.X = 0;
    coord.Y = 0;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    printf(">");
}
void utworz_tablice(){
    tab=malloc(sizeof(int*)*wysokosc);
    int i,j;
    for (i=0; i<wysokosc; i++)
        tab[i] = malloc(sizeof(int)*szerokosc);
    for(i = 0; i<wysokosc; i++)
        for(j = 0; j<szerokosc; j++)
            tab[i][j] = 0;
    tab[0][0]=1; // statek
    for(j=0; j<24; j++){
            tab[1][j]=2;
        }
    for(i=2; i<4; i++){
        for(j=23; j<24; j++){
            tab[i][j]=3;
        }
    }
    for(i=4; i<5; i++){
        for(j=19; j<24; j++){
            tab[i][j]=2;
        }
    }
    for(i=2; i<4; i++){
        for(j=20; j<23; j++){
            tab[i][j]=4;        // 4 -> $
        }
    }
    for(i=2; i<4; i++){
        tab[i][19]=3;
    }
    //slimak
    for(j=1; j<=17; j+=4){
        for(i=3; i<6; i++){
            tab[i][j]=3;
        }
    }
    for(j=3; j<=15; j+=4){
        for(i=2; i<5; i++){
            tab[i][j]=3;    // (3 -> |)  (2 -> -)
        }
    }
    //koniec slimaka
    for(j=1; j<=szerokosc; j++){
            tab[6][j]=2;
    }
    for(j=1; j<szerokosc; j+=2){
        tab[8][j]=4;
    }
    for(j=0; j<24; j++){
        tab[10][j]=2;
    }
    // plotki
    for(j=3; j<=23; j+=4){
        tab[11][j]=3;
    }
    for(j=1; j<=21; j+=4){
        tab[12][j]=3;
    }
    // koniec plotkow
    for(j=1; j<szerokosc; j++){
        tab[13][j]=2;
    }
    S.x=1, S.y=1;
}
void gotoxy (int x, int y)
{
    coord.X = x; coord.Y = y; // X and Y coordinates
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

int main(){
    utworz_tablice();
    plansza();
    time_t ostatnia_zmiana= clock();
    time_t teraz= clock();
    int gra=1;
    int speed=300;

    while (gra==1){
        while (teraz - ostatnia_zmiana < speed)
        {
            teraz= clock();
            if (kbhit()){
                int c = getch();
                //printf("%d",c);
                if (c==224){
                    c = getch();
                    //printf("%d",c);
                    switch (c){
                        case 72: 
                            if (S.y>0) {
                                S.y--;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 80: 
                            if (S.y>0) {
                                S.y++;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 77: 
                            if (S.x>0) {
                                S.x++;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                        case 75: 
                            if (S.x>0) {
                                S.x--;
                                gotoxy(S.x, S.y);
                                printf(">");
                            }
                        break;
                    }
                }
            };
        }
        ostatnia_zmiana= clock();
        if(S.x>szerokosc || S.y>wysokosc || S.x<=0 || S.y<=0){
            gra=0;
            system("CLS");
            gotoxy(15, 7);
            printf("Game over\n\n");
        }
        int x, y;
        for(x=0; x<24; x++){
            if(tab[2][x]==tab[S.y][S.y]){
            gra=0;
            }
        }

    }   
}
麦克哈尔特

尝试将其粘贴到 if (在 main ofc 的底部)

tab[S.y-1][S.x-1] != 1 && tab[S.y-1][S.x-1] != 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用时钟的Pygame延迟问题

来自分类Dev

使用时钟并启用

来自分类Dev

在Kivy中控制2个时钟时间表的问题

来自分类Dev

在Kivy中控制2个时钟时间表的问题

来自分类Dev

在BASYS 3上使用时钟

来自分类Dev

在奇异鸟中使用时钟

来自分类Dev

使用“!”的C ++逻辑比较问题

来自分类Dev

在Java中实现“基于任务”的程序,而无需使用时钟

来自分类Dev

ZIO测试中的“测试正在使用时间,但未提前测试时钟”

来自分类Dev

使用嵌套的for循环比较Python中的2个Excel工作表时出现问题

来自分类Dev

在C中使用布尔比较的问题

来自分类Dev

为什么人们不会只使用微控制器中的最大可用时钟

来自分类Dev

尝试添加引用时C#中的循环依赖问题

来自分类Dev

如何在RTL中使用时钟门控?

来自分类Dev

使用时钟()输出持续时间,但输出是相乘的

来自分类Dev

模拟时钟小部件javafx中的问题

来自分类Dev

Kubuntu 15.10中的数字时钟问题

来自分类Dev

我在与 c 中的整数值进行比较时遇到了问题。无法使用“==”运算符进行比较

来自分类Dev

数据在表中时如何使用模式比较更新表?

来自分类Dev

将MAX()与表JOIN一起使用时出现问题

来自分类Dev

使用TryParse将字符串值与C#中的枚举中的所有值进行比较-逻辑问题

来自分类Dev

C#比较两个数组中的循环问题

来自分类Dev

对NSDictionary中的密钥使用SKNode对象?(比较问题)

来自分类Dev

对NSDictionary中的密钥使用SKNode对象?(比较问题)

来自分类Dev

比较表中的内容

来自分类Dev

比较BigQuery中的表

来自分类Dev

比较表中的行对

来自分类Dev

比较表中的数组

来自分类Dev

与Hazelcast中的EntryProcessor和MapListener一起使用时,IMap.unlock()中的性能问题

Related 相关文章

  1. 1

    使用时钟的Pygame延迟问题

  2. 2

    使用时钟并启用

  3. 3

    在Kivy中控制2个时钟时间表的问题

  4. 4

    在Kivy中控制2个时钟时间表的问题

  5. 5

    在BASYS 3上使用时钟

  6. 6

    在奇异鸟中使用时钟

  7. 7

    使用“!”的C ++逻辑比较问题

  8. 8

    在Java中实现“基于任务”的程序,而无需使用时钟

  9. 9

    ZIO测试中的“测试正在使用时间,但未提前测试时钟”

  10. 10

    使用嵌套的for循环比较Python中的2个Excel工作表时出现问题

  11. 11

    在C中使用布尔比较的问题

  12. 12

    为什么人们不会只使用微控制器中的最大可用时钟

  13. 13

    尝试添加引用时C#中的循环依赖问题

  14. 14

    如何在RTL中使用时钟门控?

  15. 15

    使用时钟()输出持续时间,但输出是相乘的

  16. 16

    模拟时钟小部件javafx中的问题

  17. 17

    Kubuntu 15.10中的数字时钟问题

  18. 18

    我在与 c 中的整数值进行比较时遇到了问题。无法使用“==”运算符进行比较

  19. 19

    数据在表中时如何使用模式比较更新表?

  20. 20

    将MAX()与表JOIN一起使用时出现问题

  21. 21

    使用TryParse将字符串值与C#中的枚举中的所有值进行比较-逻辑问题

  22. 22

    C#比较两个数组中的循环问题

  23. 23

    对NSDictionary中的密钥使用SKNode对象?(比较问题)

  24. 24

    对NSDictionary中的密钥使用SKNode对象?(比较问题)

  25. 25

    比较表中的内容

  26. 26

    比较BigQuery中的表

  27. 27

    比较表中的行对

  28. 28

    比较表中的数组

  29. 29

    与Hazelcast中的EntryProcessor和MapListener一起使用时,IMap.unlock()中的性能问题

热门标签

归档