Программирование на Си - Урок 12 - Пишем первую простую игру про голодную собаку

preview_player
Показать описание
Это видео для тех, кто еще ни разу не программировал, но прошел предыдущие 11 уроков.

Мы напишем нашу первую игру про голодную собаку, которая проходит сквозь стены.

Новый материал:
1. массив массивов - обращение к массиву в массиве.
2. функция system("cls") - очистка экрана.
3. логический оператор И &&
4. генератор случайных чисел: srand() и rand()
5. запуск из папки
6. приведение типов (затронем краем глаза)

Безвозмездная помощь каналу:
VTB - 5368 2900 3162 0349 Антон.
Рекомендации по теме
Комментарии
Автор

Вот такой формат мне больше всего нравится.
Автор жму руку. Продолжай в том же духе.

Ilya
Автор

Спасибо. Уже кучу теории перечитал/ пересмотрел. И наконец наткнулся на урок, где интересный живой пример показан.

DunnoOnTheMoon
Автор

Это Гениально! Почти год изучаю С, и представить не мог как просто написать что-то "движущееся"! Ну все, я пошел игры делать)

ЕвгенийБоровинский-зж
Автор

Огромнейшее спасибо, не только удалось справиться с домашним заданием, но и получил огромное удовольствие. Продолжайте обучать, у Вас это отлично получается! Удачи!

demabo-
Автор

еще 3 недели назад я лишь отдаленно знал про существование языка Си, а сегодня я буду писать свою первую игру)

АлексейВержавский-щд
Автор

Спасибо за видео! Смотрю видео курс с интересом! Автор продолжай!

vitalyshevchenko
Автор

вау, это просто шикарно, жаль что я раньше не наткнулся на этот канал

itoskaletto
Автор

Месье знает толк в извращениях, - заставить собаку есть яблоки... Я бы ёжика задействовал. :)

daisondt
Автор

Спасибо благодаря тебе я написал свою первую игру

хзкто-сл
Автор

Если слушать на скорости 0.75, то можется показаться, что автор видео навеселе)))
Спасибо за урок) есть над чем подумать))) было весело, хоть и заморочено)
Можно пойти купить что-нибудь вкусненькое)

ravilfarhutdinov
Автор

Для тех, кто на линухе - замена функции getch():

char getch(void)
{
char buf = 0;
struct termios old = {0};
fflush(stdout);
if(tcgetattr(0, &old) < 0)
perror("tcsetattr()");
old.c_lflag &= ~ICANON;
old.c_lflag &= ~ECHO;
old.c_cc[VMIN] = 1;
old.c_cc[VTIME] = 0;
if(tcsetattr(0, TCSANOW, &old) < 0)
perror("tcsetattr ICANON");
if(read(0, &buf, 1) < 0)
perror("read()");
old.c_lflag |= ICANON;
old.c_lflag |= ECHO;
if(tcsetattr(0, TCSADRAIN, &old) < 0)
perror("tcsetattr ~ICANON");
/* printf("%c\n", buf); */
return buf;
}

Freidband
Автор

Благодарю за урок! + с уважением, Евген.

bishop_ru
Автор

Самое печальное что эта собака никогда не наестся

Regin-cbqd
Автор

Классный формат уроков! Теперь посмотрю все!

EugenySubbotin
Автор

Как же сейчас смешно слышать, еще и в такой интонации, фразу: "Домашнее задание!".

ivanbalanar
Автор

Немного доделал программу и получилась собака с длинным хвостом.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
char field[10][21];
int tail[100][2];
int length = 1;
tail[0][0] = 5;
tail[0][1] = 5;
int apple_x = 5, apple_y = 3;
char key;
srand(time(NULL));



while(key != 'h'){
system("cls");
sprintf(field[0],
for(int i = 1; i < 9; i++)
sprintf(field[i], "# #");
sprintf(field[9],

field[apple_y][apple_x] = '*';
for(int i = 0; i < length; i++){
if(i == 0)
field[tail[0][0]][tail[0][1]] = '@';
else
field[tail[i][0]][tail[i][1]] = '.';
}

for(int i = 0; i < 10; i++)
printf("%s\n", field[i]);
printf("your length - %d", length+1);
key = getch();

int ox = tail[0][1], oy = tail[0][0];
if(key == 'w') tail[0][0]--;
if(key == 's') tail[0][0]++;
if(key == 'd') tail[0][1]++;
if(key == 'a') tail[0][1]--;
== '#' || field[tail[0][0]][tail[0][1]] == '.'){
tail[0][1] = ox;
tail[0][0] = oy;
printf("\nGame
return 1;
}else{
for(int i = 1; i < length; i++){
int temp = tail[i][1];
tail[i][1] = ox;
ox = temp;

temp = tail[i][0];
tail[i][0] = oy;
oy = temp;
}
}

if(tail[0][0] == apple_y && tail[0][1] == apple_x){
while(tail[0][0] == apple_y && tail[0][1] == apple_x || field[apple_y][apple_x] == '.'){
apple_y = rand() * 1.0 / RAND_MAX * 8 + 1;
apple_x = rand() * 1.0 / RAND_MAX * 17 + 1;
}
tail[length][0] = oy;
tail[length][1] = ox;
length++;
}
}
return 0;
}

bordoor
Автор

Очень доступно. Лайк, подписка, колокольчик)

kig
Автор

Спасибо большое, я просто в шоке :)😅😅

v_kol
Автор

Спасибо! Класс !
А можно как то красивую оболочку приделать ?

robertnewman
Автор

Чтобы очистить консоль в линукс используете system("clear");

vip