OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [services/] [curses/] [pdcurses/] [current/] [tests/] [rain.c] - Blame information for rev 819

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
/****************************************************************************
2
 * Copyright (c) 2002 Free Software Foundation, Inc.                        *
3
 *                                                                          *
4
 * Permission is hereby granted, free of charge, to any person obtaining a  *
5
 * copy of this software and associated documentation files (the            *
6
 * "Software"), to deal in the Software without restriction, including      *
7
 * without limitation the rights to use, copy, modify, merge, publish,      *
8
 * distribute, distribute with modifications, sublicense, and/or sell       *
9
 * copies of the Software, and to permit persons to whom the Software is    *
10
 * furnished to do so, subject to the following conditions:                 *
11
 *                                                                          *
12
 * The above copyright notice and this permission notice shall be included  *
13
 * in all copies or substantial portions of the Software.                   *
14
 *                                                                          *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18
 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22
 *                                                                          *
23
 * Except as contained in this notice, the name(s) of the above copyright   *
24
 * holders shall not be used in advertising or otherwise to promote the     *
25
 * sale, use or other dealings in this Software without prior written       *
26
 * authorization.                                                           *
27
 ****************************************************************************/
28
 
29
/* $Id: rain.c,v 1.1 2009/05/10 08:29:53 jld Exp $ */
30
 
31
#include <curses.h>
32
#include <stdlib.h>
33
#include <time.h>
34
 
35
/* rain 11/3/1980 EPS/CITHEP */
36
 
37
static int next_j(int j)
38
{
39
    if (j == 0)
40
        j = 4;
41
    else
42
        --j;
43
 
44
    if (has_colors())
45
    {
46
        int z = rand() % 3;
47
        chtype color = COLOR_PAIR(z);
48
 
49
        if (z)
50
            color |= A_BOLD;
51
 
52
        attrset(color);
53
    }
54
 
55
    return j;
56
}
57
 
58
int main(int argc, char *argv[])
59
{
60
    int x, y, j, r, c, seed;
61
    static int xpos[5], ypos[5];
62
 
63
#ifdef XCURSES
64
    Xinitscr(argc, argv);
65
#else
66
    initscr();
67
#endif
68
    seed = time((time_t *)0);
69
        srand(seed);
70
 
71
    if (has_colors())
72
    {
73
        int bg = COLOR_BLACK;
74
 
75
        start_color();
76
 
77
#if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
78
        if (use_default_colors() == OK)
79
            bg = -1;
80
#endif
81
        init_pair(1, COLOR_BLUE, bg);
82
        init_pair(2, COLOR_CYAN, bg);
83
    }
84
 
85
    nl();
86
    noecho();
87
    curs_set(0);
88
    timeout(0);
89
    keypad(stdscr, TRUE);
90
 
91
    r = LINES - 4;
92
    c = COLS - 4;
93
 
94
    for (j = 5; --j >= 0;)
95
    {
96
        xpos[j] = rand() % c + 2;
97
        ypos[j] = rand() % r + 2;
98
    }
99
 
100
    for (j = 0;;)
101
    {
102
        x = rand() % c + 2;
103
        y = rand() % r + 2;
104
 
105
        mvaddch(y, x, '.');
106
 
107
        mvaddch(ypos[j], xpos[j], 'o');
108
 
109
        j = next_j(j);
110
        mvaddch(ypos[j], xpos[j], 'O');
111
 
112
        j = next_j(j);
113
        mvaddch(ypos[j] - 1, xpos[j], '-');
114
        mvaddstr(ypos[j], xpos[j] - 1, "|.|");
115
        mvaddch(ypos[j] + 1, xpos[j], '-');
116
 
117
        j = next_j(j);
118
        mvaddch(ypos[j] - 2, xpos[j], '-');
119
        mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\");
120
        mvaddstr(ypos[j], xpos[j] - 2, "| O |");
121
        mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /");
122
        mvaddch(ypos[j] + 2, xpos[j], '-');
123
 
124
        j = next_j(j);
125
        mvaddch(ypos[j] - 2, xpos[j], ' ');
126
        mvaddstr(ypos[j] - 1, xpos[j] - 1, "   ");
127
        mvaddstr(ypos[j], xpos[j] - 2, "     ");
128
        mvaddstr(ypos[j] + 1, xpos[j] - 1, "   ");
129
        mvaddch(ypos[j] + 2, xpos[j], ' ');
130
 
131
        xpos[j] = x;
132
        ypos[j] = y;
133
 
134
        switch (getch())
135
        {
136
        case 'q':
137
        case 'Q':
138
            curs_set(1);
139
            endwin();
140
            return EXIT_SUCCESS;
141
        case 's':
142
            nodelay(stdscr, FALSE);
143
            break;
144
        case ' ':
145
            nodelay(stdscr, TRUE);
146
#ifdef KEY_RESIZE
147
            break;
148
        case KEY_RESIZE:
149
# ifdef PDCURSES
150
            resize_term(0, 0);
151
            erase();
152
# endif
153
            r = LINES - 4;
154
            c = COLS - 4;
155
#endif
156
        }
157
        napms(50);
158
    }
159
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.