From 979706129b09ca5704893b0ef1d79551c150ee2a Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Sun, 30 Apr 2023 02:53:53 -0700 Subject: [PATCH] Format fix 2005/vik/README.md --- 2005/vik/README.md | 116 ++++++++++++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 44 deletions(-) diff --git a/2005/vik/README.md b/2005/vik/README.md index b18b17aee..bb868e8de 100644 --- a/2005/vik/README.md +++ b/2005/vik/README.md @@ -1,10 +1,9 @@ # Most circuitous walk - Daniel Vik - 926 Genter Street - La Jolla Ca 92037 - US - daniel@vik.cc +Daniel Vik +US + + ## To build: @@ -26,50 +25,70 @@ make ## Judges' remarks: -An amazing use of the X libraries with twisty code passages, -all different. One risks running in code path circles as main is -called again and again. Be sure to pay attention to commas! :-) +An amazing use of the X libraries with twisty code passages, all different. One +risks running in code path circles as `main()` is called again and again. Be +sure to pay attention to commas! :-) ## Author's remarks: -This entry is a Wolfenstein style graphics engine where a user can navigate in -a 3D world. The maze has walls with bitmap textures. The application contains -a default world with textures, but the power of the engine is exposed through -user configured maps. User defined worlds support up to 26 different wall -textures that can even be animated. One example of a user defined world is -submitted with the entry. +This entry is a [Wolfenstein](https://en.wikipedia.org/wiki/Wolfenstein) style +[graphics engine](https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) +where a user can navigate in a +[3D](https://en.wikipedia.org/wiki/3D_computer_graphics) world. The +[maze](https://en.wikipedia.org/wiki/Maze) has walls with [bitmap +textures](https://en.wikipedia.org/wiki/Bitmap_textures). The application +contains a default world with textures, but the power of the engine is exposed +through user configured [maps](https://en.wikipedia.org/wiki/Map). User defined +worlds support up to 26 different wall textures that can even be animated. One +example of a user defined world is submitted with the entry. ### Features This program is a complete 3D engine with - * Easy configurable maze maps - * Up to 26 different bitmap textures in a maze - * Support for animated bitmap textures - * Uses default bitmaps in case the configured bitmaps can't be found - * A default map in case no one is specified - * Configurable window size - * Navigation using cursor keys (rotate left and right, move forward and -backward) +* Easy configurable maze maps. +* Up to 26 different bitmap textures in a maze. +* Support for animated bitmap textures. +* Uses default bitmaps in case the configured bitmaps can't be found. +* A default map in case no one is specified. +* Configurable window size. +* Navigation using cursor keys (rotate left and right, move forward and +backward). ### Build and Run -Compile the source code and link x libraries if necessary. The program takes +Compile the source code and link [x +libraries](https://en.wikipedia.org/wiki/Xlib) if necessary. The program takes three options which have to be typed in a specific order as described below. - Usage: prog [-w ] [mapfile] +``` + Usage: ./vik [-w ] [mapfile] width - Specifies the width of the window mapfile - Filename containing a map +``` -Here are a few examples: +#### Examples -> | Command line: | Description: | -> | ------------------------ | ---------------------- | -> | $ ./prog | Starts the engine using a built in labyrinth and texture bitmaps | -> | $ ./prog maze.map | Starts the engine and loads the labyrinth defined in the file maze.map | -> | $ ./prog -w 400 maze.map | Starts the engine using maze.map in a window that is 400 pixels wide | +Start the engine using a built in labyrinth and texture bitmaps: -Note that the mapfile has to be the last argument and the -w option if present +```sh +./vik +``` + +Start the engine and loads the labyrinth defined in the file +[maze.map](maze.map): + +```sh +./vik maze.map +``` + +Start the engine using [maze.map](maze.map) in a window that is 400 pixels wide: + +```sh +./vik -w 400 maze.map +``` + +Note that the `mapfile` has to be the last argument and the `-w` option if present has to be the first. The map definition files and the bitmap files should be located in the current directory. @@ -78,10 +97,11 @@ Use the cursor keys to navigate through the labyrinth. ### Creating mazes A maze consist of a map file and texture bitmap files. The map file is an -ascii text file where lower case letters represent walls. The letter tells the -engine what bitmap texture file to use. The `'*'` character lets the engine know +ASCII text file where lower case letters represent walls. The letter tells the +engine what bitmap texture file to use. The `*` character lets the engine know where to position the user. The example below shows how a map file can look: +``` aaaaaaaaaaaaa a a a * a @@ -89,7 +109,9 @@ where to position the user. The example below shows how a map file can look: c c cccccccccccccccccccc -The engine loads the map, and creates walls. When a character 'a'-'z' is found, +``` + +The engine loads the map, and creates walls. When a character `a`-`z` is found, the engine will load the corresponding texture bitmap. The bitmap file must be named `*.bmp` where `*` is substituted with the letter of the wall in the map. @@ -99,24 +121,30 @@ current directory). ### Obfuscation -The program is obfuscated in several ways, bad use of variables, use of the `?` -operator, recursive calls to main, bad use of for variables and the comma -operator. To make the final obfuscated touch I ran indent which really made -the program unreadable (I guess that is not really the intent with indent ;) +The program is obfuscated in several ways: + +* Bad use of variables. +* Use of the `?` operator. +* Recursive calls to `main()`. +* Bad use of for variables and the comma operator. +* To make the final obfuscated touch I ran indent which really made the program +unreadable (I guess that is not really the intent with indent ;) ) ### Compiler warnings -There are no compiler warnings when compiling with -ansi but there are quite -many warnings from lclint. Mainly because the program is very optimized for +There are no compiler warnings when compiling with `-ansi` but there are quite +a few warnings from `lclint`. Mainly because the program is very optimized for code size. ### Limitations -The program only compiles and runs on X based systems. +The program only compiles and runs on [X based +systems](https://en.wikipedia.org/wiki/X_Window_System). -The program does not run that smooth under cygwin. It seems to be a priority -issue with cygwin and it can easily be solved by increasing the priority of -the application a little bit. +The program does not run that smooth under +[Cygwin](https://en.wikipedia.org/wiki/Cygwin). It seems to be a priority issue +with Cygwin and it can easily be solved by increasing the priority of the +application a little bit. ## Copyright and CC BY-SA 4.0 License: