* fixed an overflow in the tunnel update code. * fragbomb is now 'f', not 'd'. * added a missing call to init_bonus(). git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@52 92316355-f0b4-4df1-b90c-862c8a59935fmaster
@@ -13,18 +13,26 @@ AM_CONFIG_HEADER(config.h) | |||||
AM_PROG_CC_C_O | AM_PROG_CC_C_O | ||||
AC_PROG_CPP | AC_PROG_CPP | ||||
AC_ARG_ENABLE(slang, | |||||
[ --enable-slang slang graphics support (default enabled)]) | |||||
AC_ARG_ENABLE(ncurses, | AC_ARG_ENABLE(ncurses, | ||||
[ --enable-ncurses ncurses interface support (default is slang)]) | |||||
[ --enable-ncurses ncurses graphics support (default disabled)]) | |||||
if test "${enable_ncurses}" = "yes" | if test "${enable_ncurses}" = "yes" | ||||
then | then | ||||
AC_CHECK_HEADER(ncurses.h,:,AC_MSG_ERROR([cannot find ncurses headers])) | AC_CHECK_HEADER(ncurses.h,:,AC_MSG_ERROR([cannot find ncurses headers])) | ||||
AC_CHECK_LIB(ncurses,initscr,:,AC_MSG_ERROR([cannot find ncurses library])) | AC_CHECK_LIB(ncurses,initscr,:,AC_MSG_ERROR([cannot find ncurses library])) | ||||
else | else | ||||
AC_CHECK_HEADER(slang.h,:,AC_MSG_ERROR([cannot find slang headers])) | |||||
AC_CHECK_LIB(slang,SLkp_init,:,AC_MSG_ERROR([cannot find slang library])) | |||||
if test "${enable_slang}" != "no" | |||||
then | |||||
AC_CHECK_HEADER(slang.h,:,AC_MSG_ERROR([cannot find slang headers])) | |||||
AC_CHECK_LIB(slang,SLkp_init,:,AC_MSG_ERROR([cannot find slang library])) | |||||
else | |||||
: | |||||
fi | |||||
fi | fi | ||||
AM_CONDITIONAL(USE_SLANG, test "${enable_slang}" != "no") | |||||
AM_CONDITIONAL(USE_NCURSES, test "${enable_ncurses}" = "yes") | AM_CONDITIONAL(USE_NCURSES, test "${enable_ncurses}" = "yes") | ||||
AC_OUTPUT([ | AC_OUTPUT([ | ||||
@@ -7,12 +7,13 @@ AM_CFLAGS = -g -O2 -fno-strength-reduce -fomit-frame-pointer | |||||
# Code qui fait des warnings == code de porc == deux baffes dans ta gueule | # Code qui fait des warnings == code de porc == deux baffes dans ta gueule | ||||
AM_CFLAGS += -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs | AM_CFLAGS += -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs | ||||
if USE_SLANG | |||||
CPPFLAGS_slang = -DUSE_SLANG | |||||
LDFLAGS_slang = -lslang | |||||
endif | |||||
if USE_NCURSES | if USE_NCURSES | ||||
CPPFLAGS_gfx = -DUSE_NCURSES | |||||
LDFLAGS_gfx = -lncurses | |||||
else | |||||
CPPFLAGS_gfx = -DUSE_SLANG | |||||
LDFLAGS_gfx = -lslang | |||||
CPPFLAGS_ncurses = -DUSE_NCURSES | |||||
LDFLAGS_ncurses = -lncurses | |||||
endif | endif | ||||
bin_PROGRAMS = ttyvaders | bin_PROGRAMS = ttyvaders | ||||
@@ -33,6 +34,6 @@ ttyvaders_SOURCES = \ | |||||
tunnel.c \ | tunnel.c \ | ||||
$(NULL) | $(NULL) | ||||
ttyvaders_CPPFLAGS = $(CPPFLAGS_gfx) | |||||
ttyvaders_LDADD = $(LDFLAGS_gfx) | |||||
ttyvaders_CPPFLAGS = $(CPPFLAGS_slang) $(CPPFLAGS_ncurses) | |||||
ttyvaders_LDADD = $(LDFLAGS_slang) $(LDFLAGS_ncurses) | |||||
@@ -3,7 +3,7 @@ | |||||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | * Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | ||||
* All Rights Reserved | * All Rights Reserved | ||||
* | * | ||||
* $Id: ceo.c,v 1.4 2002/12/22 22:17:41 sam Exp $ | |||||
* $Id: ceo.c,v 1.5 2002/12/23 10:06:27 sam Exp $ | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
@@ -22,6 +22,7 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#include <stdio.h> | |||||
#include <unistd.h> | #include <unistd.h> | ||||
#include "common.h" | #include "common.h" | ||||
@@ -3,7 +3,7 @@ | |||||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | * Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | ||||
* All Rights Reserved | * All Rights Reserved | ||||
* | * | ||||
* $Id: common.h,v 1.10 2002/12/23 09:28:37 sam Exp $ | |||||
* $Id: common.h,v 1.11 2002/12/23 10:06:27 sam Exp $ | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
@@ -32,12 +32,17 @@ | |||||
# define gfx_goto(x,y) SLsmg_gotorc(y,x) | # define gfx_goto(x,y) SLsmg_gotorc(y,x) | ||||
# define gfx_putchar(x) SLsmg_write_char(x) | # define gfx_putchar(x) SLsmg_write_char(x) | ||||
# define gfx_putstr(x) SLsmg_write_string(x) | # define gfx_putstr(x) SLsmg_write_string(x) | ||||
#else | |||||
#elif USE_NCURSES | |||||
# include <curses.h> | # include <curses.h> | ||||
# define gfx_color(x) attrset(COLOR_PAIR(x)) | # define gfx_color(x) attrset(COLOR_PAIR(x)) | ||||
# define gfx_goto(x,y) move(y,x) | # define gfx_goto(x,y) move(y,x) | ||||
# define gfx_putchar(x) addch(x) | # define gfx_putchar(x) addch(x) | ||||
# define gfx_putstr(x) addstr(x) | # define gfx_putstr(x) addstr(x) | ||||
#else | |||||
# define gfx_color(x) do{}while(0) | |||||
# define gfx_goto(x,y) do{}while(0) | |||||
# define gfx_putchar(x) do{}while(0) | |||||
# define gfx_putstr(x) do{}while(0) | |||||
#endif | #endif | ||||
#define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0) | #define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0) | ||||
@@ -3,7 +3,7 @@ | |||||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | * Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | ||||
* All Rights Reserved | * All Rights Reserved | ||||
* | * | ||||
* $Id: graphics.c,v 1.4 2002/12/22 18:44:12 sam Exp $ | |||||
* $Id: graphics.c,v 1.5 2002/12/23 10:06:27 sam Exp $ | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
@@ -49,7 +49,7 @@ int init_graphics( void ) | |||||
SLsmg_cls(); | SLsmg_cls(); | ||||
SLsmg_refresh(); | SLsmg_refresh(); | ||||
#else | |||||
#elif USE_NCURSES | |||||
/* Initialize ncurses library */ | /* Initialize ncurses library */ | ||||
initscr(); | initscr(); | ||||
keypad(stdscr, TRUE); | keypad(stdscr, TRUE); | ||||
@@ -57,6 +57,8 @@ int init_graphics( void ) | |||||
cbreak(); | cbreak(); | ||||
noecho(); | noecho(); | ||||
nodelay(stdscr, TRUE); | nodelay(stdscr, TRUE); | ||||
#else | |||||
/* Dummy driver */ | |||||
#endif | #endif | ||||
return 0; | return 0; | ||||
@@ -80,7 +82,7 @@ void init_game( game *g ) | |||||
g->w = SLtt_Screen_Cols; | g->w = SLtt_Screen_Cols; | ||||
g->h = SLtt_Screen_Rows; | g->h = SLtt_Screen_Rows; | ||||
#else | |||||
#elif USE_NCURSES | |||||
start_color(); | start_color(); | ||||
init_pair( BLACK, COLOR_BLACK, COLOR_BLACK ); | init_pair( BLACK, COLOR_BLACK, COLOR_BLACK ); | ||||
@@ -96,6 +98,10 @@ void init_game( game *g ) | |||||
g->w = COLS; | g->w = COLS; | ||||
g->h = LINES; | g->h = LINES; | ||||
#else | |||||
/* Use dummy driver */ | |||||
g->w = 80; | |||||
g->h = 25; | |||||
#endif | #endif | ||||
} | } | ||||
@@ -106,13 +112,15 @@ char get_key( void ) | |||||
{ | { | ||||
return SLang_getkey(); | return SLang_getkey(); | ||||
} | } | ||||
#else | |||||
#elif USE_NCURSES | |||||
char key; | char key; | ||||
if( ( key = getch() ) != ERR ) | if( ( key = getch() ) != ERR ) | ||||
{ | { | ||||
return key; | return key; | ||||
} | } | ||||
#else | |||||
/* Use dummy driver */ | |||||
#endif | #endif | ||||
return 0; | return 0; | ||||
@@ -122,8 +130,10 @@ void clear_graphics( void ) | |||||
{ | { | ||||
#ifdef USE_SLANG | #ifdef USE_SLANG | ||||
SLsmg_cls(); | SLsmg_cls(); | ||||
#else | |||||
#elif USE_NCURSES | |||||
clear(); | clear(); | ||||
#else | |||||
/* Use dummy driver */ | |||||
#endif | #endif | ||||
} | } | ||||
@@ -132,8 +142,10 @@ void refresh_graphics( void ) | |||||
gfx_goto( 0, 0 ); | gfx_goto( 0, 0 ); | ||||
#ifdef USE_SLANG | #ifdef USE_SLANG | ||||
SLsmg_refresh(); | SLsmg_refresh(); | ||||
#else | |||||
#elif USE_NCURSES | |||||
refresh(); | refresh(); | ||||
#else | |||||
/* Use dummy driver */ | |||||
#endif | #endif | ||||
} | } | ||||
@@ -142,9 +154,10 @@ void end_graphics( void ) | |||||
#ifdef USE_SLANG | #ifdef USE_SLANG | ||||
SLang_reset_tty(); | SLang_reset_tty(); | ||||
SLsmg_reset_smg(); | SLsmg_reset_smg(); | ||||
#else | |||||
#elif USE_NCURSES | |||||
endwin(); | endwin(); | ||||
#else | |||||
/* Use dummy driver */ | |||||
#endif | #endif | ||||
} | } | ||||
@@ -3,7 +3,7 @@ | |||||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | * Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | ||||
* All Rights Reserved | * All Rights Reserved | ||||
* | * | ||||
* $Id: main.c,v 1.9 2002/12/23 09:28:37 sam Exp $ | |||||
* $Id: main.c,v 1.10 2002/12/23 10:06:27 sam Exp $ | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
@@ -69,6 +69,7 @@ static void start_game (game *g) | |||||
g->p = create_player( g ); | g->p = create_player( g ); | ||||
g->al = malloc(sizeof(aliens)); | g->al = malloc(sizeof(aliens)); | ||||
init_bonus( g, g->bo ); | |||||
init_weapons( g, g->wp ); | init_weapons( g, g->wp ); | ||||
init_explosions( g, g->ex ); | init_explosions( g, g->ex ); | ||||
init_aliens( g, g->al ); | init_aliens( g, g->al ); | ||||
@@ -128,7 +129,7 @@ static void start_game (game *g) | |||||
add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM ); | add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM ); | ||||
} | } | ||||
break; | break; | ||||
case 'd': | |||||
case 'f': | |||||
if( g->p->nuke == 0 ) | if( g->p->nuke == 0 ) | ||||
{ | { | ||||
g->p->nuke = 40; | g->p->nuke = 40; | ||||
@@ -222,10 +223,7 @@ static void start_game (game *g) | |||||
} | } | ||||
free_starfield( g, g->sf ); | free_starfield( g, g->sf ); | ||||
#if 0 | |||||
free_player( p ); | |||||
free_tunnel( g->t ); | free_tunnel( g->t ); | ||||
#endif | |||||
// free_player( g->p ); | |||||
} | } | ||||
@@ -3,7 +3,7 @@ | |||||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | * Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | ||||
* All Rights Reserved | * All Rights Reserved | ||||
* | * | ||||
* $Id: tunnel.c,v 1.5 2002/12/23 09:28:37 sam Exp $ | |||||
* $Id: tunnel.c,v 1.6 2002/12/23 10:06:27 sam Exp $ | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
@@ -39,8 +39,6 @@ tunnel * create_tunnel( game *g, int w, int h ) | |||||
if( t->w >= g->w ) | if( t->w >= g->w ) | ||||
{ | { | ||||
t->left[0] = -10; | |||||
t->right[0] = g->w + 10; | |||||
for( i = 0; i < g->h; i++ ) | for( i = 0; i < g->h; i++ ) | ||||
{ | { | ||||
t->left[i] = -10; | t->left[i] = -10; | ||||
@@ -81,7 +79,7 @@ void update_tunnel( game *g, tunnel *t ) | |||||
int i,j,k; | int i,j,k; | ||||
/* Slide tunnel one block vertically */ | /* Slide tunnel one block vertically */ | ||||
for( i = t->h; i--; ) | |||||
for( i = t->h - 1; i--; ) | |||||
{ | { | ||||
t->left[i+1] = t->left[i]; | t->left[i+1] = t->left[i]; | ||||
t->right[i+1] = t->right[i]; | t->right[i+1] = t->right[i]; | ||||