Changed type stuff

This commit is contained in:
AnnaSnoeijs 2025-06-06 21:32:00 +02:00
parent 355c79bac4
commit c0b357deb2
6 changed files with 65 additions and 50 deletions

View file

@ -122,10 +122,10 @@ int main( int argc, char *argv[] ){
fprintf( stderr, "ERR: AMOUT OF ROWS MUST BE AT LEAST 1\n" );
return -1;
}
#define ROWOVERFLOW ( sizeof(column_t) * CHAR_BIT )
#define ROWOVERFLOW (rowsint_t)( sizeof(column_t) * CHAR_BIT )
if( playboard.rows >= ROWOVERFLOW ){
fprintf( stderr,
"ERR: AMOUT OF ROWS MUST BE LESS THAN %d\n", (int)ROWOVERFLOW
"ERR: AMOUT OF ROWS MUST BE LESS THAN %d\n", ROWOVERFLOW
);
return -1;
}
@ -164,7 +164,7 @@ int main( int argc, char *argv[] ){
initBoard( playboard );
// Begin loopin
for(;; playboard.player = !playboard.player ){
int column = askColumn( playboard );
columnsint_t column = askColumn( playboard );
playMove( &playboard, column );
calcWins( &wins, playboard, column );
updateBoard( wins, playboard, column );

View file

@ -1,10 +1,11 @@
#!/usr/bin/make -f
FLAGS = -std=gnu23
FLAGS = -std=c23
FLAGS += -O3
FLAGS += -pedantic
FLAGS += -Wall
FLAGS += -Wextra
FLAGS += -Werror
FLAGS += -Wformat-truncation=0
GITFLAG = -D'GITHASH=$(shell git rev-parse --short=1 HEAD)'

32
types.h
View file

@ -4,14 +4,26 @@
#include <stdint.h>
#include "config.h"
typedef int column_t;
#if INT_FAST16_MAX == INT_FAST64_MAX
typedef int rowsint_t;
typedef int columnsint_t;
typedef unsigned winint_t;
typedef uintmax_t column_t;
#else
typedef int_fast8_t rowsint_t;
typedef int_fast8_t columnsint_t;
typedef uint_fast8_t winint_t;
typedef uint_fast8_t column_t;
#endif
#define WININT_FORMAT "%3d"
typedef struct {
int player;
column_t *height;
bool player;
rowsint_t *height;
column_t *column;
uint8_t rows;
uint8_t columns;
rowsint_t rows;
columnsint_t columns;
} board_t;
typedef struct {
@ -26,11 +38,11 @@ typedef struct {
} directions_t;
typedef struct {
int total;
int horizontal;
int vertical;
int diagonalUp;
int diagonalDown;
winint_t total;
winint_t horizontal;
winint_t vertical;
winint_t diagonalUp;
winint_t diagonalDown;
} wincount_t;
typedef struct {

2
ui.h
View file

@ -11,7 +11,7 @@ extern void initBoard(
extern void updateBoard(
const wins_t wins,
const board_t board,
const int column
const columnsint_t column
);
extern int askColumn(

View file

@ -71,15 +71,17 @@ void initBoard( const board_t board ){
keypad(stdscr, TRUE);
nonl();
echo();
for( int column = 0; column < board.columns; column++ ){
for( columnsint_t column = 0; column < board.columns; column++ ){
char colnum[4];
sprintf( colnum, "%2d", column + FIRST_NUMBER );
snprintf(
colnum, sizeof(colnum), "%2d", column + FIRST_NUMBER
);
mvaddstr(
BOARD_Y,
BOARD_X + BOARD_DX * ( column + 1 ),
colnum
);
for(int row = 0; row < board.rows; row++){
for( rowsint_t row = 0; row < board.rows; row++ ){
mvaddstr(
BOARD_Y + BOARD_DY * ( row + 1 ),
BOARD_X + BOARD_DX * ( column + 1 ),
@ -92,9 +94,11 @@ void initBoard( const board_t board ){
colnum
);
}
for(int row = 0; row < board.rows; row++ ){
for( rowsint_t row = 0; row < board.rows; row++ ){
char rownum[4];
sprintf( rownum, "%2d", board.rows - row + FIRST_NUMBER - 1 );
snprintf(
rownum, sizeof(rownum), "%2d", board.rows - row + FIRST_NUMBER - 1
);
mvaddstr(
BOARD_Y + BOARD_DY * ( row + 1 ),
BOARD_X,
@ -106,7 +110,7 @@ void initBoard( const board_t board ){
rownum
);
}
for( int y = 0; y < SCOREBOARD_HEIGHT; y++ ){
for( uint_fast8_t y = 0; y < SCOREBOARD_HEIGHT; y++ ){
char *str;
switch(y){
case 0: str = "┌───────────────┬────┬────┐"; break;
@ -132,70 +136,70 @@ void initBoard( const board_t board ){
void updateBoard(
const wins_t wins,
const board_t board,
const int column
const columnsint_t column
){
int height = board.height[ column ];
rowsint_t height = board.height[ column ];
mvaddstr(
BOARD_Y + BOARD_DY * ( board.rows - height + 1 ),
BOARD_X + 1 + BOARD_DX * ( column + 1 ),
board.column[ column ] & 1 << ( height - 1 ) ? "1" : "0"
);
char num[4];
sprintf( num, "%3d", wins.count0.vertical );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count0.vertical );
mvaddstr(
SCOREBOARD_Y + 3,
SCOREBOARD_X + 17,
num
);
sprintf( num, "%3d", wins.count1.vertical );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count1.vertical );
mvaddstr(
SCOREBOARD_Y + 3,
SCOREBOARD_X + 22,
num
);
sprintf( num, "%3d", wins.count0.horizontal );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count0.horizontal );
mvaddstr(
SCOREBOARD_Y + 4,
SCOREBOARD_X + 17,
num
);
sprintf( num, "%3d", wins.count1.horizontal );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count1.horizontal );
mvaddstr(
SCOREBOARD_Y + 4,
SCOREBOARD_X + 22,
num
);
sprintf( num, "%3d", wins.count0.diagonalUp );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count0.diagonalUp );
mvaddstr(
SCOREBOARD_Y + 5,
SCOREBOARD_X + 17,
num
);
sprintf( num, "%3d", wins.count1.diagonalUp );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count1.diagonalUp );
mvaddstr(
SCOREBOARD_Y + 5,
SCOREBOARD_X + 22,
num
);
sprintf( num, "%3d", wins.count0.diagonalDown );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count0.diagonalDown );
mvaddstr(
SCOREBOARD_Y + 6,
SCOREBOARD_X + 17,
num
);
sprintf( num, "%3d", wins.count1.diagonalDown );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count1.diagonalDown );
mvaddstr(
SCOREBOARD_Y + 6,
SCOREBOARD_X + 22,
num
);
sprintf( num, "%3d", wins.count0.total );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count0.total );
mvaddstr(
SCOREBOARD_Y + 8,
SCOREBOARD_X + 17,
num
);
sprintf( num, "%3d", wins.count1.total );
snprintf( num, sizeof(num), WININT_FORMAT, wins.count1.total );
mvaddstr(
SCOREBOARD_Y + 8,
SCOREBOARD_X + 22,
@ -206,7 +210,7 @@ void updateBoard(
int askColumn(
const board_t board
){
int column = 0;
columnsint_t column = 0;
#ifdef ARROWS
move( BOARD_Y, BOARD_X );
if( board.player ) addstr( "p1" );

View file

@ -27,26 +27,24 @@
#define SCOREBOARD_HEIGHT 9
void initBoard( const board_t board ){
for( int i = SCOREBOARD_HEIGHT - ( board.rows + 2 ); i > 0; i-- )
for( rowsint_t i = SCOREBOARD_HEIGHT - ( board.rows + 2 ); i > 0; i-- )
putchar( '\n' );
printf( "\n " );
for( int column = 0; column < board.columns; column++ )
for( columnsint_t column = 0; column < board.columns; column++ )
printf( "%2d ", column + FIRST_NUMBER );
putchar( '\n' );
for( int row = board.rows - 1; row > -1; row-- ){
for( rowsint_t row = board.rows - 1; row > -1; row-- ){
// begin row
printf( "%2d " , row + FIRST_NUMBER );
for( int column = 0; column < board.columns; column++ )
for( columnsint_t column = 0; column < board.columns; column++ )
printf( "[ ]" );
// end of row
printf( "%2d" , row + FIRST_NUMBER );
switch( row ){
}
putchar( '\n' );
}
// end of board
printf( " " );
for( int column = 0; column < board.columns; column++ )
for( columnsint_t column = 0; column < board.columns; column++ )
printf( "%2d ", column + FIRST_NUMBER );
#define SCOREBOARD_LINE_END "\033[B\033["XSTR(SCOREBOARD_WIDTH)"D"
printf("\033["XSTR(SCOREBOARD_OFFSET)"C\033["XSTR(SCOREBOARD_HEIGHT)"A"
@ -69,9 +67,9 @@ void initBoard( const board_t board ){
void updateBoard(
const wins_t wins,
const board_t board,
const int column
const columnsint_t column
){
int height = board.height [ column ];
rowsint_t height = board.height [ column ];
printf(
"\033[%dA\033[%dC%c\033[%dB",
height + 3,
@ -81,11 +79,11 @@ void updateBoard(
);
printf(
"\r\033[7A\033[%dC"
"%3d │%3d\033[B\033[8D"
"%3d │%3d\033[B\033[8D"
"%3d │%3d\033[B\033[8D"
"%3d │%3d\033[2B\033[8D"
"%3d │%3d\033[2B"
"" WININT_FORMAT "" WININT_FORMAT "\033[B\033[8D"
"" WININT_FORMAT "" WININT_FORMAT "\033[B\033[8D"
"" WININT_FORMAT "" WININT_FORMAT "\033[B\033[8D"
"" WININT_FORMAT "" WININT_FORMAT "\033[2B\033[8D"
"" WININT_FORMAT "" WININT_FORMAT "\033[2B"
,( 3 * board.columns + 6 ) + SCOREBOARD_WIDTH - 8
,wins.count0.vertical, wins.count1.vertical
,wins.count0.horizontal, wins.count1.horizontal
@ -99,7 +97,7 @@ void updateBoard(
int askColumn(
const board_t board
){
int column;
columnsint_t column;
for(;;){
printf( "Wher player %d put? ", board.player );
printf( "\033[K" ); // clear everything after cursor
@ -112,7 +110,7 @@ int askColumn(
else
column *= 10;
if( column >= 0 )
column += ( int )( ch - '0' );
column += (columnsint_t)( ch - '0' );
} else {
column = -2;
}