瀏覽代碼

* added support for --disable-slang.

* 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-862c8a59935f
master
sam 22 年之前
父節點
當前提交
c43bfbd085
共有 7 個檔案被更改,包括 55 行新增31 行删除
  1. +11
    -3
      configure.ac
  2. +8
    -7
      src/Makefile.am
  3. +2
    -1
      src/ceo.c
  4. +7
    -2
      src/common.h
  5. +21
    -8
      src/graphics.c
  6. +4
    -6
      src/main.c
  7. +2
    -4
      src/tunnel.c

+ 11
- 3
configure.ac 查看文件

@@ -13,18 +13,26 @@ AM_CONFIG_HEADER(config.h)
AM_PROG_CC_C_O
AC_PROG_CPP

AC_ARG_ENABLE(slang,
[ --enable-slang slang graphics support (default enabled)])
AC_ARG_ENABLE(ncurses,
[ --enable-ncurses ncurses interface support (default is slang)])
[ --enable-ncurses ncurses graphics support (default disabled)])

if test "${enable_ncurses}" = "yes"
then
AC_CHECK_HEADER(ncurses.h,:,AC_MSG_ERROR([cannot find ncurses headers]))
AC_CHECK_LIB(ncurses,initscr,:,AC_MSG_ERROR([cannot find ncurses library]))
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

AM_CONDITIONAL(USE_SLANG, test "${enable_slang}" != "no")
AM_CONDITIONAL(USE_NCURSES, test "${enable_ncurses}" = "yes")

AC_OUTPUT([


+ 8
- 7
src/Makefile.am 查看文件

@@ -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
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
CPPFLAGS_gfx = -DUSE_NCURSES
LDFLAGS_gfx = -lncurses
else
CPPFLAGS_gfx = -DUSE_SLANG
LDFLAGS_gfx = -lslang
CPPFLAGS_ncurses = -DUSE_NCURSES
LDFLAGS_ncurses = -lncurses
endif

bin_PROGRAMS = ttyvaders
@@ -33,6 +34,6 @@ ttyvaders_SOURCES = \
tunnel.c \
$(NULL)

ttyvaders_CPPFLAGS = $(CPPFLAGS_gfx)
ttyvaders_LDADD = $(LDFLAGS_gfx)
ttyvaders_CPPFLAGS = $(CPPFLAGS_slang) $(CPPFLAGS_ncurses)
ttyvaders_LDADD = $(LDFLAGS_slang) $(LDFLAGS_ncurses)


+ 2
- 1
src/ceo.c 查看文件

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* 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
* it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@

#include "config.h"

#include <stdio.h>
#include <unistd.h>

#include "common.h"


+ 7
- 2
src/common.h 查看文件

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* 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
* 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_putchar(x) SLsmg_write_char(x)
# define gfx_putstr(x) SLsmg_write_string(x)
#else
#elif USE_NCURSES
# include <curses.h>
# define gfx_color(x) attrset(COLOR_PAIR(x))
# define gfx_goto(x,y) move(y,x)
# define gfx_putchar(x) addch(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

#define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0)


+ 21
- 8
src/graphics.c 查看文件

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* 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
* it under the terms of the GNU General Public License as published by
@@ -49,7 +49,7 @@ int init_graphics( void )

SLsmg_cls();
SLsmg_refresh();
#else
#elif USE_NCURSES
/* Initialize ncurses library */
initscr();
keypad(stdscr, TRUE);
@@ -57,6 +57,8 @@ int init_graphics( void )
cbreak();
noecho();
nodelay(stdscr, TRUE);
#else
/* Dummy driver */
#endif

return 0;
@@ -80,7 +82,7 @@ void init_game( game *g )

g->w = SLtt_Screen_Cols;
g->h = SLtt_Screen_Rows;
#else
#elif USE_NCURSES
start_color();

init_pair( BLACK, COLOR_BLACK, COLOR_BLACK );
@@ -96,6 +98,10 @@ void init_game( game *g )

g->w = COLS;
g->h = LINES;
#else
/* Use dummy driver */
g->w = 80;
g->h = 25;
#endif
}

@@ -106,13 +112,15 @@ char get_key( void )
{
return SLang_getkey();
}
#else
#elif USE_NCURSES
char key;

if( ( key = getch() ) != ERR )
{
return key;
}
#else
/* Use dummy driver */
#endif

return 0;
@@ -122,8 +130,10 @@ void clear_graphics( void )
{
#ifdef USE_SLANG
SLsmg_cls();
#else
#elif USE_NCURSES
clear();
#else
/* Use dummy driver */
#endif
}

@@ -132,8 +142,10 @@ void refresh_graphics( void )
gfx_goto( 0, 0 );
#ifdef USE_SLANG
SLsmg_refresh();
#else
#elif USE_NCURSES
refresh();
#else
/* Use dummy driver */
#endif
}

@@ -142,9 +154,10 @@ void end_graphics( void )
#ifdef USE_SLANG
SLang_reset_tty();
SLsmg_reset_smg();
#else
#elif USE_NCURSES
endwin();
#else
/* Use dummy driver */
#endif
}



+ 4
- 6
src/main.c 查看文件

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* 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
* 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->al = malloc(sizeof(aliens));

init_bonus( g, g->bo );
init_weapons( g, g->wp );
init_explosions( g, g->ex );
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 );
}
break;
case 'd':
case 'f':
if( g->p->nuke == 0 )
{
g->p->nuke = 40;
@@ -222,10 +223,7 @@ static void start_game (game *g)
}

free_starfield( g, g->sf );

#if 0
free_player( p );
free_tunnel( g->t );
#endif
// free_player( g->p );
}


+ 2
- 4
src/tunnel.c 查看文件

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* 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
* 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 )
{
t->left[0] = -10;
t->right[0] = g->w + 10;
for( i = 0; i < g->h; i++ )
{
t->left[i] = -10;
@@ -81,7 +79,7 @@ void update_tunnel( game *g, tunnel *t )
int i,j,k;

/* Slide tunnel one block vertically */
for( i = t->h; i--; )
for( i = t->h - 1; i--; )
{
t->left[i+1] = t->left[i];
t->right[i+1] = t->right[i];


Loading…
取消
儲存