@Lexluter20

Где ошибка в коде?

Делаю игру - арканоид.
в функции main, после получения значения move, в moveracket не меняется значение racket.x, почему?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define width 65
#define height 25

char mas[height][width + 1];

char move;

typedef struct{
    int x, y;
    int w;
}tracket;
tracket racket;

void initracket()
{
    racket.w = 10;
    racket.x = (width - racket.w) /2;
    racket.y = height - 1;

}


void init_map()
{
    for(int i = 0; i < width; i++){
        mas[0][i] = '#';
    }
    for(int i = 0; i < height; i++ ){
        mas[i][width] = '\0';
    }

    for(int i = 1; i < height; i++){
        strncpy(mas[i], mas[0], width);
    }

    for(int i = 1; i< height; i++){
        for(int p = 1; p < width -1; p++){
            mas[i][p] = ' ';
        }
    }

}



void putracket(){
    for(int i = racket.x; i < racket.x+racket.w; i++ ){
        mas[racket.y][i] = 219;
    }

}



void show()
{
    for(int i = 0; i< height; i++){
        printf("%s\n", mas[i]);
    }
    printf("%d", racket.x);
}

void moveracket(char m)
{
    if(m == 'd')racket.x + 1;
    if(m == 'a')racket.x - 1;

}

int main()
{
    initracket();
    init_map();
    do{
        system("cls");
        putracket();
        show();
        move = getch();
        moveracket(move);
    }while(move != 'e');


    return 0;
}
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
Вот тут как-то странно написано.
if(m == 'd') racket.x + 1;
if(m == 'a') racket.x - 1;


Если хочешь чтоб результат сохранился то надо или инкремент написать или выражение с присваиванием
racket.x = racket.x + 1;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы