source: ttyvaders/trunk/src/starfield.c @ 365

Last change on this file since 365 was 365, checked in by Sam Hocevar, 16 years ago
  • configure.ac: + No longer check for ncurses etc., we use caca-config.
  • src/*: + Updated to new libcaca API, mainly caca_get_event() and caca_set_color()

calls.

  • Property svn:keywords set to Id
File size: 2.2 KB
Line 
1/*
2 *   ttyvaders     Textmode shoot'em up
3 *   Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
4 *                 All Rights Reserved
5 *
6 *   $Id: starfield.c 365 2004-02-17 13:53:14Z sam $
7 *
8 *   This program is free software; you can redistribute it and/or modify
9 *   it under the terms of the GNU General Public License as published by
10 *   the Free Software Foundation; either version 2 of the License, or
11 *   (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23#include "config.h"
24
25#include <stdlib.h>
26
27#include "common.h"
28
29starfield * create_starfield(game *g)
30{
31    int i;
32    starfield *s;
33
34    s = malloc(STARS * sizeof(starfield));
35    if(s == NULL)
36        exit(1);
37
38    for(i = 0; i < STARS; i++)
39    {
40        s[i].x = caca_rand(0, g->w - 1);
41        s[i].y = caca_rand(0, g->h - 1);
42        s[i].z = caca_rand(1, 3);
43        s[i].c = caca_rand(0, 1) ? CACA_COLOR_LIGHTGRAY : CACA_COLOR_DARKGRAY;
44        s[i].ch = caca_rand(0, 1) ? '.' : '\'';
45    }
46
47    return s;
48}
49
50void draw_starfield(game *g, starfield *s)
51{
52    int i;
53
54    for(i = 0; i < STARS; i++)
55    {
56        if(s[i].x >= 0)
57        {
58            caca_set_color(s[i].c, CACA_COLOR_BLACK);
59            caca_putchar(s[i].x, s[i].y, s[i].ch);
60        }
61    }
62}
63
64void update_starfield(game *g, starfield *s)
65{
66    int i;
67
68    for(i = 0; i < STARS; i++)
69    {
70        if(s[i].x < 0)
71        {
72            s[i].x = caca_rand(0, g->w - 1);
73            s[i].y = 0;
74            s[i].z = caca_rand(1, 2);
75            s[i].c = caca_rand(0, 1) ? CACA_COLOR_LIGHTGRAY : CACA_COLOR_DARKGRAY;
76            s[i].ch = caca_rand(0, 1) ? '.' : '\'';
77        }
78        else if(s[i].y < g->h-1)
79        {
80            s[i].y += s[i].z;
81        }
82        else
83        {
84            s[i].x = -1;
85        }
86    }
87}
88
89void free_starfield(game *g, starfield *s)
90{
91    free(s);
92}
93
Note: See TracBrowser for help on using the repository browser.