The problem with a 7DRL is that there is not much time (seven days to write a game being what the previous acronym indicates). The line between "generic library code" and "this code fits a specific game like a glove" can get pretty fine, though to be official you would need, well, officials. Maybe the contestants could be locked in a room with a laptop and food like they did for the traditional Chinese exams (minus the laptop). Maybe we'll call that "hard" mode.
################################################################# # xxxxx xxxx x xx x xxxxx xx xxxx # # xxxxx xxxxx xxx xxxxxx xxxxx xxx xxx x# # xxxxxxxxxx xxxx x xxxxx xxxxx x xx xx # # xxxxxxxxx xxxxx xxxx x xxxx x xxx xxxxx xxx# # xx xxxxxxxx xxxxx xxxxx xx x xxxxxxxxxxxxx xx # #xxxx xxxxxxxxx xx xxx x xx xx xxxxxxxx x xx # #xxx xxxx x xxx xxx xxxx x xxxxxxx xx x # # x xxxx xx xxxx xxx xxxxxx xxxx xx # #xx xxxxxxxxxxx xxx xxx xxxxxx xxxxxxxxxx # #x x x x x x x x xx xxxxxxxx xx x x x x xxx xxxxxx xx x# #################################################################
Some test code output: draw a rectangle border; within that put down "x" by coinflips, then smooth the "x" with a cellular automaton. Might be an Rorschach test if you mirrored it once or twice.
Picking C (the theme was "roguelike" so using C seems, well, "like rogue") was probably a mistake. It's not really a language for fast development. Or maybe it is for not me. Another problem is my speed of writing code has never been good (and went to zero around the time of COVID) especially if I start writing tests or rambling in the documentation (as you may have noticed).
Another point is that rogue was a unix game, so obviously one must develop a roguelike on unix and for unix, or at least what passes for unix these days. Curses, too. ncurses is shipped with OpenBSD; maybe in OpenBSD 7.5 we'll even get ncurses 6! Also traditionally the source code was made available, though these days you do not have to go somewhere and get a tape from someone.
Also it might be nice to have an already working game loop and other such library code rather than having to figure out on the clock how to integrate the game loop with the energy system loop. And various other horrible bugs; even qsort(3) broke down on me! Insertion sort is probably okay here, as the scores file is about 20 entries at most, and in theory is sorted correctly?
spam.c:81:38: warning: format string is not a string literal [-Wformat-nonliteral] int check_please = vasprintf(&spam, bacon, eggs); ^~~~~ 1 warning generated. cc digital-fov.o animate.o boss.o draw.o help.o jsf.o gs.o main.o menu.o monsters.o newlevel.o path.o player.o rip.o score.o spam.o -o sbal -lm -lncurses
Things may have gotten a bit silly.
Sir Bumpsalot, Alpaca Legionnaire Play Help Scores Quit ,wgy wliL@JZE@@@@@@@@@@$~'F'~`@'^'$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\ \\y'Zg5my@@@P~F~P@@@5@| ?~TT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ''_'`~~"~~*@@@_ .w_`'`- x .. /~~~Z~?T@@@@@@@@@@@@@@@@@@@@@@@@@@@ " 0y `~-`` ''1 . `'=^r: _ '` jJ5@@@@@@@@@@@@@@@@@@@@@ Mf/ZFg +y !' _ `~^- -``'~~@@@@@@@@@@@@@@@@@@@ w\?444qg_ w L = ` ^= ._ __ ~ T@@@@@@@@@@@@@@@@@ !\GN$55@g_ .',, ,: . . \ `Z4@@@@@@@@@GJ5~TF ?"fZZZ4~~' " _1i. , / ' ,`y' - ! \ aMyy@@@@@@@@$\@Zd ,f \'Z"_ _ `'` +', !| ' ~ - ' "^ ` g$@@@@@@@@@@$@Z@g _ 'w''" ,~' " `\ |'" ! ` m _\'_ t@@@@@@@@@@@@@@@$@@ ' ,'/ w^` f ;' " "4@@@@@@@@@@@@@@@@ Z y-~y / + ` ` ` . ,w 4~@@@@@@@@@@@@@@ " \/_!i .., w-'/ _`' ' _ </ ' ~~@@@@@@@@ /\-*- '' ' ' , / ' ` ', `.~` " agy~@@@@@@ " at@r-t ` :' / 'W ! M , "` . " rw ` `0$@Z0 , 45@$_y I / , ^ ,. ` , _ _ '/' ~ @@g@@y y_ ,5@@$ _z ,[' / , ' ~ ' r j\ + '~ 4r $@@@@@ @@@@@@@a@@r ,', 'J . '_ ,,, w , ,~ ,L^ :-.+ 4@@@@@@ @@@@@@@@@@$T : ! l f.$/FL_,,' '=. ,\aaqa- * ~ [ _y@@@@@@@ $@@@@@@@@@$ "wW'/L _"/\_ \`-'___yaag#m$ma$w_yaz@F@@@@@@@@ @@@@@@@@@@1 ` + `_df+~ '`i y@Z@\$\@Z05ZEZ/0Za5\$5J05GFTTT \@@@@@@@@@ '- , `~J"' $G5Z$$y?Zy5Z$F/yF$5J\FJG@0'$F