We add an initial "_title_" and "_abstract_" to all entry `.entry.json` files. The `bin/csv2entry.sh` tool reads the `summary.csv` file and loads the "_title_" and "_abstract_" to entry `.entry.json` files. Changed `bin/csv2entry.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make csv2entry` to perform the above and test under macOS. The `bin/cvt-submission.sh` tool adds "_title_" and "_abstract_" to the .entry.json based on the `.info.json` file. Changed `bin/cvt-submission.sh` VERSION from "1.2 2024-09-23" to "1.3 2024-09-27". The `bin/entry2csv.sh` tool forms the `summary.csv` file based on the "_title_" and "_abstract_" fields found in .entry.json files. Changed `bin/entry2csv.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make entry2csv` to perform the above and test under macOS. Added `-H` and `header=with-header-3` to the `bin/md2html.cfg` for the configuration entry for `[12][0-9][0-9][0-9]/*/README.md`. Changed `bin/md2html.sh` VERSION from "1.6 2024-08-17" to "1.7 2024-09-27". All entry `index.html` files now list the "_abstract_" in a new `<h3>abstract</h3>` header. Changed `bin/subst.entry-index.sh` VERSION from "1.6 2024-09-23" to "1.7 2024-09-27". Removed `summary.csv`. Added `summary.csv` and `summary.numbers` to `.gitignore`. Sorted the result with `bin/sgi.sh`. Perform `make quick_www` to perform the above and test under macOS. Perform `make www` to perform the above and test under macOS.
1034 lines
52 KiB
HTML
1034 lines
52 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="../../ioccc.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>2020/ferguson1 - Don't tread on me award</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2020 IOCCC entry ferguson1 - Don't tread on me award">
|
||
<meta name="keywords" content="IOCCC, 2020, IOCCC 2020, IOCCC entry, ferguson1, Don't tread on me award">
|
||
</head>
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
|
||
<!-- -->
|
||
<!-- This web page was formed via the tool: bin/readme2index.sh -->
|
||
<!-- The content of main section of this web page came from: 2020/ferguson1/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/topbar.default.html -->
|
||
|
||
<div class="theader">
|
||
<nav class="topbar">
|
||
<div class="container">
|
||
<div class="logo">
|
||
<a href="../../index.html" class="logo-link">
|
||
IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Entries
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../years.html" class="sub-item-link">
|
||
Winning Entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../authors.html" class="sub-item-link">
|
||
Winning Authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../location.html" class="sub-item-link">
|
||
Location of winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../news.html" class="sub-item-link">
|
||
IOCCC News
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../status.html" class="sub-item-link">
|
||
Contest status
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/index.html" class="sub-item-link">
|
||
Rules and Guidelines
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
FAQ
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html" class="sub-item-link">
|
||
FAQ
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#submit" class="sub-item-link">
|
||
How to enter the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing IOCCC entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_web_site" class="sub-item-link">
|
||
Fixing the website
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_author" class="sub-item-link">
|
||
Updating author info
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../index.html" class="sub-item-link">
|
||
IOCCC Home
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The IOCCC Judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../contact.html" class="sub-item-link">
|
||
Contacting the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../SECURITY.html" class="sub-item-link">
|
||
IOCCC Security Policy
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../thanks-for-help.html" class="sub-item-link">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../markdown.html" class="sub-item-link">
|
||
IOCCC markdown guidelines
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="header-mobile-menu">
|
||
<noscript>
|
||
<a href="../../nojs-menu.html" class="topbar-js-label">
|
||
Please Enable JavaScript
|
||
</a>
|
||
</noscript>
|
||
|
||
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
||
<img
|
||
src="../../png/hamburger-icon-open.png"
|
||
alt="hamburger style menu icon - open state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<button id="header-close-menu-button" class="hide-content">
|
||
<img
|
||
src="../../png/hamburger-icon-closed.png"
|
||
alt="hamburger style menu icon - closed state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<div id="mobile-menu-panel" class="hide-content">
|
||
<div class="mobile-menu-container">
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
Entries
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../years.html">
|
||
Winning Entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../authors.html">
|
||
Authors of winning IOCCC entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../location.html">
|
||
Location of authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../bugs.html">
|
||
Bugs and (mis)features
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
|
||
<div class="mobile-menu-item">
|
||
Status
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/index.html">
|
||
Rules and Guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../news.html">
|
||
IOCCC News
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
FAQ
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html">
|
||
Frequently Asked Questions
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#submit">
|
||
How to enter the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
||
Fixing IOCCC entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_web_site">
|
||
Fixing the website
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Fixing author info
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
About
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../index.html">
|
||
IOCCC Home
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The IOCCC Judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contacting the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
||
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
||
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
||
|
||
headerOpenMenuButton.addEventListener("click", () => {
|
||
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.add("hide-content");
|
||
|
||
headerCloseMenuButton.classList.remove("hide-content");
|
||
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
||
|
||
mobileMenuPanel.classList.remove("hide-content");
|
||
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
||
});
|
||
|
||
headerCloseMenuButton.addEventListener("click", () => {
|
||
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerCloseMenuButton.classList.add("hide-content");
|
||
|
||
mobileMenuPanel.classList.add("hide-content");
|
||
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
||
|
||
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.remove("hide-content");
|
||
});
|
||
</script>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<a href="../../2011/zucker/index.html">
|
||
<img src="../../png/ioccc.png"
|
||
alt="IOCCC image by Matt Zucker"
|
||
width=300
|
||
height=110>
|
||
</a>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>2020/ferguson1 - Don't tread on me award</h2>
|
||
<h3>Snake game</h3>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.mid.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left" href="../endoh3/index.html">← 2020/endoh3</a>
|
||
<a class="Left" href="../index.html">↑ 2020 ↑</a>
|
||
<a class="Left" href="../ferguson2/index.html">2020/ferguson2 →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2020%2Fferguson1%2Findex.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.mid.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<div class="content" id="content">
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
|
||
|
||
<h2 id="author">Author:</h2>
|
||
<ul>
|
||
<li>Name: <a href="../../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a><br>
|
||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: 2020/ferguson1/README.md -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre><code> make</code></pre>
|
||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||
<p>The current status of this entry is:</p>
|
||
<blockquote>
|
||
<p><strong>STATUS: INABIAF - please DO NOT fix</strong></p>
|
||
</blockquote>
|
||
<p>For more detailed information see <a href="../../bugs.html#2020_ferguson1">2020/ferguson1 in bugs.html</a>.</p>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> WAIT=N WALLS=[01] EVADE=N SIZE=N MAXSIZE=N GROW=N SHEDS=N SHED=N CANNIBAL=[01] ./prog
|
||
# start pressing some arrow keys</code></pre>
|
||
<p>where <code>N</code> is a number and <code>[01]</code> is either <code>1</code> or <code>0</code> (or more correctly zero
|
||
and non-zero).</p>
|
||
<h3 id="variables">Variables:</h3>
|
||
<ul>
|
||
<li><p><strong>WAIT</strong><br>
|
||
positive or negative integer that changes how long to wait for
|
||
a key press prior to moving again. < 0 blocks which allows
|
||
for complete control over movement at your own pace. Default
|
||
231; you can move faster by holding down or rapidly pressing an
|
||
arrow key.</p></li>
|
||
<li><p><strong>WALLS</strong><br>
|
||
whether the walls are passable or impassable. Default passable,
|
||
1; 0 makes walls impassable where you die if you hit a wall.</p></li>
|
||
<li><p><strong>EVADE</strong><br>
|
||
how many movements the Snake moves before the bug (well
|
||
insect; see notes below about why bugs) will move to
|
||
another location in the field. Default 300; 0 disables.</p></li>
|
||
<li><p><strong>SIZE</strong><br>
|
||
initial size of the Snake. Note that it grows by one per
|
||
move so at the default 5 it will not initially be 5
|
||
characters long! < 0 is likely an immediate win.</p></li>
|
||
<li><p><strong>MAXSIZE</strong><br>
|
||
the maximum size the Snake can become before the game is
|
||
won. < 0 is the maximum size based on terminal dimensions;
|
||
any other size will be capped based on the terminal
|
||
dimensions to prevent problems. Note that when <strong>SIZE+GROW >=
|
||
MAXSIZE</strong> you win <em>before</em> you grow to the full size!</p></li>
|
||
<li><p><strong>GROW</strong><br>
|
||
size to grow every time you eat a bug. Default 5; negative
|
||
values are allowed. ‘Negativity’ creates for fun gameplay modes with
|
||
enough creativity. See <a href="gameplay.html">gameplay.html</a>
|
||
as well as <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for some examples.</p></li>
|
||
<li><p><strong>SHED</strong><br>
|
||
every <strong>SHED</strong> movements you will grow (> 0), shrink (< 0) or
|
||
stay the same length (0) by the <strong>SHEDS</strong> (below) value. Again
|
||
with creativity you can create some fun gameplay modes. NOTE:
|
||
the concept of shedding in this game is a misnomer; see notes
|
||
below.</p></li>
|
||
<li><p><strong>SHEDS</strong><br>
|
||
every <strong>SHED</strong> movements will impact what this value means: grow
|
||
(> 0), shrink (< 0) or not at all (0). Exception: if the snake
|
||
eats a bug the counter isn’t incremented. Again with creativity
|
||
you can create some fun gameplay modes here. For instance you
|
||
can grow upon eating a bug but shrink every <strong>SHED</strong> movements
|
||
and then it’s a battle of whether you win by <strong>SIZE < 0</strong> or
|
||
<strong>SIZE >= MAXSIZE</strong>. See <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for examples.
|
||
NOTE: the concept of shedding in this game is a misnomer; see
|
||
notes below.</p></li>
|
||
<li><p><strong>CANNIBAL</strong><br>
|
||
whether you can go through the Snake or not. Default is 0
|
||
(cannot - die if you try).</p></li>
|
||
</ul>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> make test
|
||
|
||
WAIT=75 WALLS=1 CANNIBAL=1 ./prog
|
||
|
||
./prog
|
||
|
||
SIZE=-1 ./prog
|
||
|
||
CANNIBAL=1 WALLS=1 WAIT=50 EVADE=200 ./prog
|
||
|
||
WAIT=75 GROW=-1 SIZE=5 CANNIBAL=1 ./prog
|
||
|
||
CANNIBAL=1 WALLS=1 WAIT=0 EVADE=1 MAXSIZE=10 ./prog
|
||
|
||
./play
|
||
# allows you to configure colours and has various pre-configured gameplay modes
|
||
|
||
./snake-colours
|
||
# allows for configuring colours</code></pre>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>As the <a href="https://en.wikipedia.org/wiki/Gadsden_flag">Gadsden flag</a> warns, beware of the snake!
|
||
This game has a number of configurable pitfalls including walls and snakes.</p>
|
||
<p>There is a good deal of useful documentation that is provided with this entry:</p>
|
||
<ul>
|
||
<li><a href="gameplay.html">gameplay.html</a></li>
|
||
</ul>
|
||
<p>Documented game <em>features</em> and gameplay modes!</p>
|
||
<ul>
|
||
<li><a href="terminals.html">terminals.html</a></li>
|
||
</ul>
|
||
<p>Information about terminal capabilities, dimensions (setting and how to restore sanity if it causes any problems) as well as colours (limitations etc.).</p>
|
||
<ul>
|
||
<li><a href="troubleshooting.html">troubleshooting.html</a></li>
|
||
</ul>
|
||
<p>Workarounds for various game <em>features</em></p>
|
||
<ul>
|
||
<li><a href="bugs.html">bugs.html</a></li>
|
||
</ul>
|
||
<p>Bugs and things that might seem like bugs but are not.</p>
|
||
<ul>
|
||
<li><a href="chocolate-cake.html">chocolate-cake.html</a></li>
|
||
</ul>
|
||
<p>Because most of us could use some <em>Double-layered Chocolate Fudge Cake</em>!</p>
|
||
<ul>
|
||
<li><a href="obfuscation.html">obfuscation.html</a></li>
|
||
</ul>
|
||
<p>Read <strong><em>ONLY</em></strong> if you really must give up trying to de-obfuscate!</p>
|
||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||
<h3 id="feature-rich-curses-implementation-of-the-snake-game-with-many-gameplay-modes-and-options">Feature-rich curses implementation of the Snake game (with many gameplay modes and options)</h3>
|
||
<p>Snake has two cheat modes (passable walls and self [cannibalism]), a drawing (or
|
||
practising) mode, <em>can play by itself (<strong>and win!</strong>)</em>, is coloured (included
|
||
<a href="snake-colours.sh">snake-colours.sh</a> and <a href="play.sh">play.sh</a> scripts compile in player-selected colours)
|
||
and there are many other play modes (many more can be devised with the
|
||
imagination and the environmental variables; see <a href="gameplay.html">gameplay.html</a>
|
||
for many examples and <a href="play.sh">play.sh</a> for preconfigured
|
||
modes) and options. You can pause and there’s even a built-in test unit for
|
||
some features! The variables mentioned in the to run section at the top of this
|
||
file modify the behaviour of Snake.</p>
|
||
<p>Here are some other features of the game:</p>
|
||
<ul>
|
||
<li><p>A drawing/practising mode (<strong>WAIT</strong> < 0 makes <code>timeout()</code> block).</p></li>
|
||
<li><p>Computer plays the game (<strong>WAIT=0</strong>).<br></p>
|
||
<ul>
|
||
<li><strong>EPILEPSY/STIMULATION OVERLOAD WARNING</strong> included in the relevant
|
||
section (this goes for a low <strong>EVADE</strong> value too).</li>
|
||
</ul></li>
|
||
<li><p>Grow-Shrink mode (Positive and Negative Winning) mode (see
|
||
<a href="gameplay.html">gameplay.html</a> for more details).</p></li>
|
||
<li><p>The dimensions of the game (this is actually a terminal thing but I document
|
||
how to do this and its potential pitfalls) (<strong>LINES</strong> , <strong>COLUMNS</strong>).</p></li>
|
||
</ul>
|
||
<p>There are no complicated command line invocations; it’s just a matter of passing
|
||
into the game descriptively named variables and I include a script that sets up
|
||
many different gameplay modes (see <a href="gameplay.html">gameplay.html</a>
|
||
and <a href="play.sh">play.sh</a>).</p>
|
||
<p>The <a href="gameplay.html">gameplay.html</a> file has all the information on
|
||
what the game looks like, how to play, the different types of modes (that I have
|
||
thought of so far) including all those in the above list. Along with the
|
||
<a href="play.sh">play.sh</a> and <a href="snake-colours.sh">snake-colours.sh</a> scripts it’s probably the most important
|
||
file for players.</p>
|
||
<p>The gameplay file is long but it includes game printouts as well as explaining
|
||
the many different gameplay modes. The <a href="play.sh">play.sh</a> script automates most (if
|
||
not all) of the gameplay modes described in the gameplay file (it also
|
||
allows you to change colours like <a href="snake-colours.sh">snake-colours.sh</a>) as well as the judges’
|
||
suggestions (that I don’t document so as to not deobfuscate them). You can pass in
|
||
environmental variables to both scripts though obviously some will conflict with
|
||
different options in play.sh.</p>
|
||
<p>Probably just as important is <a href="chocolate-cake.html">chocolate-cake.html</a>
|
||
with an old but wonderful recipe (because the judges love chocolate and
|
||
who can blame them? - also it goes with one of the IAQs I include later).</p>
|
||
<p>The <a href="troubleshooting.html">troubleshooting.html</a> file has some
|
||
advice on potential problems (and things that might appear to be problems at
|
||
first glance but are not) that I have thought of or encountered.</p>
|
||
<p>The <a href="terminals.html">terminals.html</a> has a variety of information
|
||
specific to terminals from input/directions, dimensions, sanity and colours: a
|
||
sort of troubleshooting guide for terminals with some additional information.</p>
|
||
<p>The <a href="obfuscation.html">obfuscation.html</a> has a variety of information
|
||
including some of the obfuscation techniques and a bit of how it works.</p>
|
||
<p>The <a href="bugs.html">bugs.html</a> has a list of known bugs and things that
|
||
look like bugs but aren’t as well as documenting a built-in test unit for some
|
||
features.</p>
|
||
<p>Because all IOCCC entries should have a man page I have included one (even
|
||
though much of it is what’s also above). To render try:</p>
|
||
<pre><code> man ./snake.1</code></pre>
|
||
<p>The <a href="COMPILING.html">COMPILING.html</a> file has a few portability
|
||
notes and the <a href="HACKING.html">HACKING.html</a> file has some
|
||
information on how one might modify things, things that could be implemented
|
||
(and how to/how not to go about some of the things) as well as some other
|
||
information on the entry (some of which is deliberately not true - a variation
|
||
of misleading comments). These files are probably insignificant.</p>
|
||
<p>I have more information about this entry at <a href="https://ioccc.xexyl.net/2020/snake">https://ioccc.xexyl.net/2020/snake</a>.</p>
|
||
<p>As noted for the files I recommend looking at the html files with a browser
|
||
unless on GitHub in which case I recommend the markdown files; this particularly
|
||
goes for the gameplay, bugs, terminals, troubleshooting ones along with the most
|
||
important one, chocolate cake. Most important for the cake as the formatting is
|
||
very important.</p>
|
||
<div id="toc">
|
||
<ul>
|
||
<li><a href="#bugs">‘Bugs’</a></li>
|
||
<li><a href="#naqs">NAQs/IAQs - Never/Infrequently Asked Questions</a>
|
||
<ul>
|
||
<li><a href="#inspirations">Do I have any inspirations for this entry?</a></li>
|
||
<li><a href="#features">Are there any features I thought of that I wanted to implement but did not get to for some reason or another?</a></li>
|
||
<li><a href="#easier">Are there ways that one can make this game easier?</a></li>
|
||
<li><a href="#harder">Are there ways to make it harder?</a></li>
|
||
<li><a href="#moult">How do snakes grow in real life?</a></li>
|
||
<li><a href="#other">Any other interesting things about snakes?</a></li>
|
||
<li><a href="#opposite">Why can you go the opposite direction and so immediately die when not cannibalising?</a></li>
|
||
<li><a href="#chocolatecake">Do you have any <strong>DELICIOUS CHOCOLATE CAKE</strong> recipes?</a></li>
|
||
<li><a href="#alt">What are the files prog.alt.c, prog.2.c, prog-j.c and prog.alt.c ?</a></li>
|
||
</ul></li>
|
||
<li><a href="#winning">Winning thoughts, dedications and thanks</a></li>
|
||
</ul>
|
||
</div>
|
||
<h3 id="bugs">‘Bugs’</h3>
|
||
<ul>
|
||
<li><p>‘The screen keeps showing bugs!’ Well yes, that’s rather the point! Help out
|
||
by eating them. Keep eating them until you win! Then you will have the
|
||
satisfaction of getting rid of the non-bug bugs (okay, insects, but that
|
||
ruins a great pun and joke)! :)</p></li>
|
||
<li><p>The Snake in the game doesn’t fly (yes there are <a href="https://www.bbc.co.uk/news/science-environment-25943693">flying snakes</a>). For
|
||
other snake madness see the reports of ‘<a href="http://www.macroevolution.net/snake-human-hybrids.html">human snakes</a>’.</p></li>
|
||
<li><p>Technically walls, snakeskin and the snake itself would not be an obstacle
|
||
in real life. The shed snakeskin is not an obstacle but walls can be and
|
||
so can the snake itself. Also snakes grow by moulting (technical term for
|
||
shedding) so when the snake leaves its snakeskin behind it really ought to
|
||
grow but instead it shrinks; this means negative shedding ought to have the
|
||
snake grow and positive shedding have the snake - what? It’s a misnomer: it
|
||
took fewer bytes and the negative shedding is a positive consequence of
|
||
unsigned arithmetic.</p></li>
|
||
</ul>
|
||
<p>On a more serious note look at <a href="bugs.html">bugs.html</a>.</p>
|
||
<div id="naqs">
|
||
<h3 id="naqsiaqs-neverinfrequently-asked-questions">NAQs/IAQs (Never/Infrequently Asked Questions)</h3>
|
||
</div>
|
||
<div id="inspirations">
|
||
<h4 id="do-i-have-any-inspirations-for-this-entry">Do I have any inspirations for this entry?</h4>
|
||
</div>
|
||
<p>There are two in particular. First is a long time mate of mine wrote a bash
|
||
implementation of Snake several years ago (uncoloured, no cheat modes, hardcoded
|
||
dimensions etc. - in fact everything was hardcoded).</p>
|
||
<p>Back then I had thought of making a curses implementation of it but I never got
|
||
round to it. When the judges announced that the 2020 IOCCC contest would be open
|
||
from late December 2019 through 15 March 2020 I started thinking again on what
|
||
might be a good entry. By chance I thought of the Snake game and so wrote it
|
||
finishing the implementation of everything on 8 November 2019. Did I say
|
||
everything? That’s an unintentional lie; I thought it was everything but I
|
||
implemented many new things after that. In fact I have numerous times thought I
|
||
was done only to have added yet another feature - or two or three or more!</p>
|
||
<p>Second is the old Atari game <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> (according to Wikipedia it might even
|
||
be the origin of Snake itself). There were a few modes as I recall.
|
||
The object of the game was to surround your opponent so that they would run into
|
||
you, the wall or themselves. The opponent was either the computer or another
|
||
player.</p>
|
||
<p>In one mode you could go through walls (that’s where I got the idea to do
|
||
likewise). There was also a drawing mode where you could just move round making
|
||
different designs though that this is in my entry is a happy coincidence
|
||
(because <code>timeout()</code> will block when it gets a negative value). It’s true that
|
||
in my Snake it’s not quite the same but it’s close enough. Perhaps it can be
|
||
made more like <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> if it grows every movement but then depending on the max
|
||
size of the snake the game might be over fairly quickly (I don’t remember how
|
||
it was done in <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>).</p>
|
||
<p>In <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> each move you made you would grow in size by one. This is what
|
||
inspired the shedding mode. Anyway I always loved the game and it’s similar to
|
||
Snake in several ways.</p>
|
||
<div id="features">
|
||
<h4 id="are-there-any-features-i-thought-of-that-i-wanted-to-implement-but-did-not-get-to-for-some-reason-or-another">Are there any features I thought of that I wanted to implement but did not get to for some reason or another?</h4>
|
||
</div>
|
||
<p>Yes. I thought it would be fun if there were other obstacles for the snake (in
|
||
my mind I was thinking of barriers like the walls but in the field).</p>
|
||
<p>I also thought it would be fun to have more than one bug at some point after say
|
||
the snake gets to be some size. One of the reasons I didn’t do this is because I
|
||
was trying to save iocccsize bytes. I never got round to this though and I feel
|
||
that the features I have implemented are far more interesting and fun.</p>
|
||
<p>Another idea is having portals or teleportation but there are a number of
|
||
problems with those that would have to be worked out too.</p>
|
||
<p>I would have loved for it to be practical to support diagonal movement but as I
|
||
describe elsewhere it’s not. That’s perhaps what I regret most. It would be
|
||
possible to choose letters instead of arrow keys but even if that fit in the
|
||
size restrictions how would I show the head? I looked at the extended ncurses
|
||
character set and I didn’t see any diagonal arrows. I suppose I could have it
|
||
not show the arrows but then that brings an old problem back.</p>
|
||
<p>Nevertheless I am quite happy with the features in the game and I hope everyone
|
||
who plays it enjoys it as much as I enjoyed writing/playing it.</p>
|
||
<div id="easier">
|
||
<h4 id="are-there-ways-that-one-can-make-this-game-easier">Are there ways that one can make this game easier?</h4>
|
||
</div>
|
||
<p>I can think of at the least the following:</p>
|
||
<ul>
|
||
<li>Bigger screen will allow for freer movement (at least for more time?).</li>
|
||
<li>Increasing the movement (key press) wait to give you more time to choose
|
||
(though this slows gameplay down).</li>
|
||
<li>Decrease the size of the snake (and growth size) though over time the size
|
||
will become more and more problematic. But see the next item.</li>
|
||
<li>If you set a high growth size you don’t have to worry as much about running
|
||
into a wall or the snake itself for as long: because the check if you win is
|
||
done when the snake size is increased: if you’re 15 away from the max and
|
||
each bug you eat you grow by 11 then it won’t take as many bugs to win as it
|
||
would if the grow size was 3. This applies to shedding size too.</li>
|
||
<li>If you want to show off keep walls passable and enable cannibalism. It
|
||
won’t be a challenge then but at least you could show your final score?</li>
|
||
<li>Decrease the max size needed and if you want it even easier increase the
|
||
terminal size.</li>
|
||
<li>And the one that applies to learning new things and getting more things done
|
||
also applies here: remove all sources of distraction; turn the phone off,
|
||
lock yourself in a soundproof room (refusing to get up for anyone or
|
||
anything) and delete all your social media accounts for starters. Okay you
|
||
don’t really have to do the latter one but it can’t be denied that they can
|
||
be very distracting! As can phone (calls and otherwise). And visitors
|
||
calling. And being on this planet.</li>
|
||
<li>If you don’t want a challenge at all you could just set the start size to be
|
||
the max size or very close to it. In fact if you have the shedding size to be
|
||
even one on every move even if you normally can’t win with the same size
|
||
screen you might find it happens much more easily! You could of course play
|
||
with these parameters in different ways together - there are certainly
|
||
different combinations than I have given.</li>
|
||
<li>Of course you could also enable one or both cheat modes. You might be
|
||
considered a filthy cheat but both modes are quite fun (one being enabled by
|
||
default; does that mean it’s not actually a cheat mode?).</li>
|
||
</ul>
|
||
<div id="harder">
|
||
<h4 id="are-there-ways-to-make-it-harder">Are there ways to make it harder?</h4>
|
||
</div>
|
||
<ul>
|
||
<li>Decrease the size of the game.</li>
|
||
<li>Decrease the size of the snake growth (and initial snake size).</li>
|
||
<li>Make the snake go faster (decrease the time the game waits for input).</li>
|
||
<li>Hold down the direction keys to move faster; this is something I do often
|
||
though I have always had extremely fast reflexes and amazing eye hand
|
||
coordination (at least after glasses and the three eye surgeries?).
|
||
Admittedly I don’t find this makes it any harder but it does make you have
|
||
to react faster.</li>
|
||
<li>Be reckless (i.e. increase the chance of a wreck, a most amusing
|
||
contradictory idea if you ignore etymology).</li>
|
||
<li>Look away for a moment every so often or have a conversation with your best
|
||
mate, partner or family member whilst playing.</li>
|
||
<li>Make walls impassable and disable cannibalism.</li>
|
||
<li>Make the bug move more frequently (this can be a real problem when you can’t
|
||
go through the walls!).</li>
|
||
<li>Get used to going through walls and then try with it disabled.</li>
|
||
<li>Set the max size to the maximum (<em><code>MAXSIZE=-1</code></em> should do it).</li>
|
||
</ul>
|
||
<p>And if you’re a show-off you can try:</p>
|
||
<ul>
|
||
<li>Closing your eyes (maybe better to practise with one eye open first or even
|
||
in practice that is drawing mode?).</li>
|
||
<li>Have someone tickle you.</li>
|
||
<li>Watch a comedy show or have a laugh with a mate or partner or family member.</li>
|
||
<li>Have your partner tease you.</li>
|
||
<li>Speak on the phone with someone (paying attention to both). Come to think of
|
||
it I have actually done this though not to show off but rather it’s just
|
||
something I’m capable of…</li>
|
||
<li>Watch a film at the same time.</li>
|
||
<li>Sneeze and/or cough.</li>
|
||
<li>Have breakfast, second breakfast, elevenses, lunch, afternoon tea, dinner or
|
||
some other meal that you think of.</li>
|
||
<li>Get pissed out of your mind to make it difficult to think (please do not
|
||
drive!).</li>
|
||
<li>Do more than one or all of the above at the same time (the longer the snake
|
||
becomes the more often you should do these things).</li>
|
||
<li>Eat a <a href="cake.jpg">great chocolate cake</a>. Actually you should do that whether you’re
|
||
trying to show off or not. Sleep, bath, eat chocolate cake, play Snake, eat
|
||
chocolate cake, play Snake, sleep, … For a great recipe see below.</li>
|
||
</ul>
|
||
<p>But if that’s not enough I don’t know what to tell you other than suggest that
|
||
you make use of your talents for financial gain or at least a world record.
|
||
Either way I tip my proverbial snakeskin hat to you (animal cruelty but a pun is
|
||
a pun and every pun deserves to be shed).</p>
|
||
<div id="moult">
|
||
<h4 id="how-do-snakes-grow-in-real-life">How do snakes grow in real life?</h4>
|
||
</div>
|
||
<p>They grow through a process called moulting - shedding their skin (other
|
||
creatures also moult). This takes place over some days and unlike humans snakes
|
||
never stop growing (though growth slows down as they mature). I chose the
|
||
variables <strong>SHED</strong> and <strong>SHEDS</strong> for simplicity and because the words are
|
||
shorter. I don’t like the words because it’s rather a misnomer but what I had
|
||
chosen before was longer - STRETCH and STRETCHES.</p>
|
||
<div id="other">
|
||
<h4 id="any-other-interesting-things-about-snakes">Any other interesting things about snakes?</h4>
|
||
</div>
|
||
<p>For the fascinating science behind snake slithering see <a href="https://www.bbc.co.uk/news/science-environment-35563941">Snake walk: The physics
|
||
of slithering</a>. For the bizarre thought of snake human hybrids see <a href="http://www.macroevolution.net/snake-human-hybrids.html">human
|
||
snakes</a>. The latter is hard to comprehend and there are some sad tails (tales)
|
||
in there too because I believe that people actually believe in this (how/why I
|
||
do not know) and they really do tell the truth as they see it (even if
|
||
impossible).</p>
|
||
<div id="opposite">
|
||
<h4 id="why-can-you-go-the-opposite-direction-and-so-immediately-die-when-not-cannibalising">Why can you go the opposite direction and so immediately die when not cannibalising?</h4>
|
||
</div>
|
||
<p>When Ilya Kurdyukov was playing with this he questioned why this is possible
|
||
when other implementations don’t have it this way. There are a few reasons.</p>
|
||
<p>First is that the friend’s implementation had it that way and it had been a long
|
||
time since I had played it (if I ever did? I don’t know now: I played so many
|
||
games over the years and the game most alike it that I played is <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>, as
|
||
below).</p>
|
||
<p>It also is the way it is in <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>.</p>
|
||
<p>It makes cannibalism mode very interesting.</p>
|
||
<p>And I happen to like it the way I have it. In the end a snake isn’t an obstacle
|
||
for itself but in the game it is and I went all the way instead of only halfway.</p>
|
||
<p>It also would take more bytes and that’s a problem with IOCCC rule 2b.</p>
|
||
<p>But if you have a problem with it you can always enable cannibalism and keep
|
||
walls passable and not worry about dying.</p>
|
||
<div id="chocolatecake">
|
||
<h4 id="do-you-have-any-delicious-chocolate-cake-recipes">Do you have any <strong>DELICIOUS CHOCOLATE CAKE</strong> recipes?</h4>
|
||
</div>
|
||
<p>Why yes I do! So good in fact that even my late stepmum who didn’t even like
|
||
chocolate (except white chocolate) loved this cake. It’s a double-layered
|
||
chocolate fudge cake. See the file <a href="chocolate-cake.html">chocolate-cake.html</a>
|
||
for the recipe. Note that it’s a complicated
|
||
but it’s well worth it!</p>
|
||
<p>I included it in both of my entries this year because if any of them won more people
|
||
can have this recipe; also it might help remind the judges that they really
|
||
should have their cook bake it so they can all - including the cook should they
|
||
also like chocolate - enjoy the cake whilst judging (and otherwise - it’s a big
|
||
cake and very rich). Sadly they didn’t get to enjoy it during their judging due
|
||
to the pandemic but maybe next time (or they can do on their own).</p>
|
||
<p><strong>Do make <em>SURE</em> that you pay attention to <em>ALL</em> notes!</strong></p>
|
||
<h5 id="reiterating-the-notes-about-the-cake-and-the-icing">Reiterating the notes about the cake and the icing</h5>
|
||
<p>The following notes are so important that they are worth repeating here.</p>
|
||
<ul>
|
||
<li>The icing being difficult in warmer rooms is rather significant. If necessary
|
||
use the refrigerator or else air conditioner to cool down the place. This might
|
||
or might not work well enough.</li>
|
||
<li>Do <strong>NOT</strong> use imitation vanilla!</li>
|
||
<li>Do <strong>NOT</strong> use butter even if you think it’ll come out better; it will come
|
||
out bad! Many people have made this mistake ‘because they know better’. You’ve
|
||
been warned.</li>
|
||
<li>Pay attention to the rest of the notes as well! They’re crucial.</li>
|
||
</ul>
|
||
<div id="alt">
|
||
<h4 id="what-are-the-files-prog.2.c-prog.3.c-prog.3-j.c-and-prog.alt.c">What are the files prog.2.c, prog.3.c, prog.3-j.c and prog.alt.c ?</h4>
|
||
</div>
|
||
<p>I submitted three Snake versions; these are the other layouts for those few
|
||
(more likely none) who are interested to see them.</p>
|
||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.2.c">prog.2.c</a> has more digraphs but I think no other significant differences.</p>
|
||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> is in a more artistic layout (a backwards S), has at least one
|
||
additional obfuscation technique (see deobfuscation information) but it also has more digraphs
|
||
and as the judges said they feel that digraphs are dated so that’s probably why
|
||
they chose the first layout. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3-j.c">prog.3-j.c</a> version is
|
||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> with a shorter <code>J</code> macro.</p>
|
||
<p>The prog.alt.c version is the one that allows for customising the bug colour and
|
||
it’s used in both <a href="snake-colours.sh">snake-colours.sh</a> and <a href="play.sh">play.sh</a>. It also calls <code>erase()</code>
|
||
first, clearing the screen, which the play.sh and snake-colours.sh scripts also
|
||
both do.</p>
|
||
<h2 id="authors-dedication">Author’s dedication:</h2>
|
||
<div id="winning">
|
||
<h3 id="winning-thoughts-dedications-and-thanks">Winning thoughts, dedications and thanks</h3>
|
||
</div>
|
||
<p>Once again I’m honoured to win along with some of the other veterans who I have
|
||
a huge amount of respect for; there’s <a href="../../authors.html#Don_Yang">Don Yang</a>, <a href="../../authors.html#Dave_Burton">Dave
|
||
Burton</a>, <a href="../../authors.html#Yusuke_Endoh">Yusuke Endoh</a>
|
||
and <a href="../../authors.html#Edward_Giles">Edward Giles</a> all of whom are amazing
|
||
programmers. I’m especially proud to win besides Dave Burton and Yusuke Endoh
|
||
but Don Yang and Edward Giles too.</p>
|
||
<p>But there are some others who I don’t remember like <a href="../../authors.html#Ilya_Kurdyukov">Ilya
|
||
Kurdyukov</a>
|
||
(who’s offered a lot of interesting thoughts on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">Snake</a> and
|
||
who plans to have his own version after the entries are published), <a href="../../authors.html#Nathan_Otterness">Nathan
|
||
Otterness</a>, <a href="../../authors.html#Nicholas_Carlini">Nicholas
|
||
Carlini</a> (your entry is an absolutely brilliant
|
||
abuse of <code>printf</code> - and I totally agree with the judges remarks that your entry
|
||
is so novel that it’ll be worth special mention in the future Best of IOCCC
|
||
list!) and <a href="../../authors.html#_tsoj">tsoj</a> too.</p>
|
||
<p>Well done and congratulations to all of you again! Thank you for submitting the
|
||
wonderful entries and I’m honoured to have my two entries beside yours!</p>
|
||
<p>To Dave Burton I thank you for your wonderful comments as well as pointing out
|
||
that even with <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.alt.c">prog.alt.c</a> it probably would be better to make use
|
||
of the alt target instead of naming prog.c prog.alt.c. You’re quite right, I had
|
||
thought of it but you brought it up so I could correct it. Much appreciated
|
||
mate.</p>
|
||
<p>I would like to dedicate this entry to my wonderful mum Dianne Ferguson whom I
|
||
love with all my heart and soul <3 Thank you for being the best mother
|
||
imaginable! You’ve been there for me in the darkest of my hours without question
|
||
without complaint and with all the love, compassion, empathy, sympathy and
|
||
devotion anyone could ever ask for. Bless you again and again and again dear
|
||
mother.</p>
|
||
<p>I also want to dedicate this to Vicky Wilmore who has given me a lot of
|
||
love the past few years and who was there for me in some very dark times. Thank
|
||
you Vicky sweetheart from the bottom of my heart and soul xxx</p>
|
||
<p>I would like to thank my dear friend <a href="https://www.ficture.nl">Martijn
|
||
Schoemaker</a> for encouraging me in my programming over
|
||
the years and who I owe a great deal to. Thank you for believing in me and my
|
||
programming abilities (and other abilities) even when I couldn’t believe in
|
||
myself! Very much appreciated especially coming from an amazing programmer who I
|
||
have huge admiration for!</p>
|
||
<p>Finally I want to thank Leo Broukhis, Simon Cooper and Landon Curt Noll for
|
||
continuing to hold the contest after all these years - and for having selected
|
||
my entries. It’s a huge honour; thank you! I also happen to <strong>love</strong> your
|
||
comments as well as the award titles. And yes indeed ‘most of us could use
|
||
<em><a href="chocolate-cake.html">Double-layered Chocolate Fudge Cake</a></em>!’</p>
|
||
<p>If you wish to contact me please do so. Please contact via mastodon. You can try
|
||
email but I’m more likely to respond to mastodon messages.</p>
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
<!-- AFTER: last line of markdown file: 2020/ferguson1/README.md -->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<div id="inventory">
|
||
<h1 id="inventory-for-2020ferguson1">Inventory for 2020/ferguson1</h1>
|
||
</div>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">prog.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.alt.c">prog.alt.c</a> - alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.orig.c">prog.orig.c</a> - original source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/snake-colours.sh">snake-colours.sh</a> - script to configure colours of game</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> - like snake-colours.sh with pre-configured gameplay modes</li>
|
||
<li><a href="COMPILING.html">COMPILING.html</a> - about compiling</li>
|
||
<li><a href="HACKING.html">HACKING.html</a> - how one might add to or modify code</li>
|
||
<li><a href="bugs.html">bugs.html</a> - things that look like bugs but are not</li>
|
||
<li><a href="cannibalism.log.html">cannibalism.log.html</a> - shows extreme cannibalism mode output</li>
|
||
<li><a href="chocolate-cake.html">chocolate-cake.html</a> - Double-layered Chocolate Fudge Cake Recipe</li>
|
||
<li><a href="crazy.log.html">crazy.log.html</a> - explains various odd screen dumps</li>
|
||
<li><a href="gameplay.html">gameplay.html</a> - many different gameplay modes described</li>
|
||
<li><a href="obfuscation.html">obfuscation.html</a> - detailed information about the obfuscation of the code</li>
|
||
<li><a href="terminals.html">terminals.html</a> - terminal capabilities and dimensions and colours</li>
|
||
<li><a href="troubleshooting.html">troubleshooting.html</a> - troubleshooting Snake</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.2.c">prog.2.c</a> - source code with more digraphs</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> - source code with a more artistic layout</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3-j.c">prog.3-j.c</a> - source code with artistic layout and shorter j macro</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/snake.1">snake.1</a> - Snake game man page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/termcaps.c">termcaps.c</a> - terminal capability test source code</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2020_ferguson1.tar.bz2">2020_ferguson1.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/COMPILING.md">COMPILING.md</a> - markdown source for COMPILING.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/HACKING.md">HACKING.md</a> - markdown source for HACKING.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/bugs.md">bugs.md</a> - markdown source for bugs.html</li>
|
||
<li><a href="cake.jpg">cake.jpg</a> - image of Double-layered Chocolate Fudge Cake</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/cannibalism.log.md">cannibalism.log.md</a> - markdown source for cannibalism.log.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/chocolate-cake.md">chocolate-cake.md</a> - markdown source for chocolate-cake.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/crazy.log.md">crazy.log.md</a> - markdown source for crazy.log.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/gameplay.md">gameplay.md</a> - markdown source for gameplay.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href="ioccc-cake.jpg">ioccc-cake.jpg</a> - image of Double-layered Chocolate Fudge Cake with ‘IOCCC’</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/obfuscation.md">obfuscation.md</a> - markdown source for obfuscation.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.path">.path</a> - directory path from top level directory</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/terminals.md">terminals.md</a> - markdown source for terminals.html</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/troubleshooting.md">troubleshooting.md</a> - markdown source for troubleshooting.html</li>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
</ul>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<h4>
|
||
Jump to: <a href="#">top</a>
|
||
</h4>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.inventory.html -->
|
||
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2024 by Landon Curt Noll:
|
||
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
||
<p>
|
||
This work is <b>licensed by Landon Curt Noll</b> under
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
||
target="_blank"
|
||
rel="license noopener noreferrer"
|
||
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/cc.png"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/by.png"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/sa.png"
|
||
alt="arrow looping back on itself inside circle symbol"><br>
|
||
You should <b>carefully review</b> the
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
||
before using the licensed material.<br>
|
||
You may wish to review the
|
||
<b><a href="../../license.html"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
||
of <b>CC BY-SA 4.0</b>.<br>
|
||
</p>
|
||
</div>
|
||
|
||
<div id="coda"><h3>Coda</h3>
|
||
<p>
|
||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2020%2Fferguson1%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.inventory.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|