LINUX.ORG.RU
ФорумTalks

Со Старым Новым годом!


1

2

Сабж.

#include <curses.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

int main()
{
        int slx, sly, cx[4], cy[4], i, dflag;
        char c2016[] = { '2', '0', '1', '6' };
        srand(time(0));
        initscr();
        clear();
        noecho();
        curs_set(0);
        cbreak();
        slx = COLS / 2 - 2;
        sly = LINES / 2;
        for (i = 0; i < 4; i++) {
                cx[i] = (int)((double)COLS * rand() / (RAND_MAX + 1.0));
                cy[i] = (int)((double)LINES * rand() / (RAND_MAX + 1.0));
                printf("%d, %d\n", cx[i], cy[i]);
        }
        for (;;) {
                for (i = 0; i < 4; i++)
                        mvaddch(cy[i], cx[i], c2016[i]);
                refresh();
                sleep(1);
                for (i = 0; i < 4; i++)
                        mvaddch(cy[i], cx[i], ' ');
                dflag = 1;
                for (i = 0; i < 4; i++) {
                        if (cx[i] < slx + i) {
                                cx[i]++;
                                dflag = 0;
                        }
                        if (cx[i] > slx + i) {
                                cx[i]--;
                                dflag = 0;
                        }
                        if (cy[i] < sly) {
                                cy[i]++;
                                dflag = 0;
                        }
                        if (cy[i] > sly) {
                                cy[i]--;
                                dflag = 0;
                        }
                }
                if (dflag)
                        break;
        }
        endwin();
        return 0;
}

★★★★★

Ответ на: комментарий от mystery

Конечно, нет.

no2016.c: В функции <<main>>:
no2016.c:10:17: предупреждение: многознаковая символьная константа [-Wmultichar]
  char c2016[] = '2016';
                 ^
no2016.c:10:17: ошибка: неверный инициализатор

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Xellos

На православном перле-питоне

О, а вот и наркоманы вылезли. Почём нынче опиум? :)

P.S. Это что же надо употреблять, что бы просить питоно-перловский код вместо сишного? Боюсь, тут попами и опиумом дело не ограничилось...

Stahl ★★☆
()

Устаревшие неточные календари не нужны и не достойны отдельного «праздника».

Psych218 ★★★★★
()
Ответ на: комментарий от false

А это вообще строка, а в коде mvaddch(), а не mvaddstr(). При этом не следует забывать, что традиционно строки обрабатываются от указателя до '\0', а здесь нет смысла выводить «2016», «016»,«16», «6». Можно, конечно, вписать

char *c2016[] = { "2", "0", "1", "6" };
а потом заменить mvaddch() на mvaddstr(), но профита от этого не будет, только лишняя обёртка.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Хотя, да, строка же и есть массив символов, и если с ней работать не как со строкой, а как с массивом символов... Оказывается, так тоже можно, да.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Stahl

Это что надо употреблять, чтобы для скрипта в пять строчек запускать компилятор, линковщик и отдельно ещё a.out?

Xellos ★★★★★
()
Ответ на: комментарий от Xellos

Не знаю как там в 80х, но нынче это делается одной строкой.
Чёрт подери, я уже не помню когда я последний раз запускал линковщик отдельно.

Stahl ★★☆
()
Ответ на: комментарий от Xellos

А х.з. как с ней бороться. Я, например, не представляю как собрать и запустить Ява код. Надо что-то настраивать с рантаймом и прочее. Си — универсален, прост и удобен.

Stahl ★★☆
()
Ответ на: комментарий от CYB3R

По мне - и там, и там много манипуляций и ненужных инструкций в коде. Скриптовые языки придуманы для скриптовых вещей.

Xellos ★★★★★
()

Жуть как долго!

Поменял на nanosleep в 0.05 секунды — стало значительно лучше :)

Deleted
()
gcc newyear.c
/tmp/ccgRbiOB.o: In function `main':
newyear.c:(.text+0x2a): undefined reference to `initscr'
newyear.c:(.text+0x31): undefined reference to `stdscr'
newyear.c:(.text+0x39): undefined reference to `wclear'
newyear.c:(.text+0x3e): undefined reference to `noecho'
newyear.c:(.text+0x48): undefined reference to `curs_set'
newyear.c:(.text+0x4d): undefined reference to `cbreak'
newyear.c:(.text+0x53): undefined reference to `COLS'
newyear.c:(.text+0x68): undefined reference to `LINES'
newyear.c:(.text+0x86): undefined reference to `COLS'
newyear.c:(.text+0xc4): undefined reference to `LINES'
newyear.c:(.text+0x14f): undefined reference to `stdscr'
newyear.c:(.text+0x159): undefined reference to `wmove'
newyear.c:(.text+0x173): undefined reference to `stdscr'
newyear.c:(.text+0x17e): undefined reference to `waddch'
newyear.c:(.text+0x18f): undefined reference to `stdscr'
newyear.c:(.text+0x197): undefined reference to `wrefresh'
newyear.c:(.text+0x1c3): undefined reference to `stdscr'
newyear.c:(.text+0x1cd): undefined reference to `wmove'
newyear.c:(.text+0x1d9): undefined reference to `stdscr'
newyear.c:(.text+0x1e6): undefined reference to `waddch'
newyear.c:(.text+0x2d8): undefined reference to `endwin'
collect2: error: ld returned 1 exit status
sehellion ★★★★★
()
Ответ на: комментарий от sehellion

Вот. А на перлопитоне такого бы не было!

Xellos ★★★★★
()
Ответ на: комментарий от saahriktu

Да, для меня это не очевидно.
Собрал, запустил

sehellion ★★★★★
()

Старым Новым годом

Эталонное ненужно.

drull ★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.