The core of `bin/gen-other-html.sh` code that converts entry non-README.md into HTML has been moved into a new tool: `bin/othermd2html.sh`. The `bin/othermd2html.sh` tool will be useful to the `bin/cvt-submission.sh` tool that is under development. Added info about `bin/othermd2html.sh` to `bin/README.md`. Changed `bin/gen-other-html.sh` VERSION from "1.4.1 2024-08-18" to "1.5 2024-08-27". HTML produced by `bin/gen-other-html.sh` now uses a "jump to" mid-bar test now shows the `YYYY/dir/index.html` link text (with `YYYY/dir/` added). Performed `make gen_other_html` to accomplish the above and to test under macOS. Performed `make gen_top_html` to accomplish the above and to test under macOS.
1118 lines
53 KiB
HTML
1118 lines
53 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>The International Obfuscated C Code Contest</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="gameplay.md for 2020/ferguson1">
|
||
<meta name="keywords" content="IOCCC, 2020/ferguson1, gameplay.md">
|
||
</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/gen-other-html.sh -->
|
||
<!-- The content of main section of this web page came from: 2020/ferguson1/gameplay.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/gameplay.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/gameplay.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/gameplay.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>gameplay.html for 2020/ferguson1</h2>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.up2index.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left" href="index.html">↑ jump to 2020/ferguson1/index.html ↑</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2020%2Fferguson1%2Fgameplay.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.up2index.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 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: 2020/ferguson1/gameplay.md -->
|
||
<p>Playing the game is very simple but because there are many different modes I
|
||
have included much more than just the input keys and a few printouts of the
|
||
game. For normal play you probably don’t even need this file at all unless it be
|
||
for the input keys.</p>
|
||
<div id="toc">
|
||
<ol type="1">
|
||
<li><p><a href="#support">Testing terminal environment/capabilities</a></p></li>
|
||
<li><p><a href="#input">Input keys</a></p></li>
|
||
<li><p><a href="#gameplay">Gameplay</a></p>
|
||
<ul>
|
||
<li><a href="#initial">The initial screen</a></li>
|
||
<li><a href="#playing">Playing the game</a></li>
|
||
<li><a href="#walls">Walls</a></li>
|
||
<li><a href="#cannibalism">Cannibalism</a></li>
|
||
<li><a href="#shedding">Stretching (shedding)</a></li>
|
||
<li><a href="#winning">Winning</a></li>
|
||
<li><a href="#quitting">Quitting</a></li>
|
||
</ul></li>
|
||
<li><p><a href="#modes">Gameplay modes</a></p>
|
||
<ul>
|
||
<li><a href="#warning"><strong>Photosensitive epilepsy/Stimulation overload trigger warnings</strong></a></li>
|
||
<li><a href="#drawing">Drawing / Practice mode</a></li>
|
||
<li><a href="#auto">Computer playing / Automatic mode (Photosensitive epilepsy/Stimulation overload trigger)</a>
|
||
<ul>
|
||
<li><a href="#auto-variations">Variations</a></li>
|
||
</ul></li>
|
||
<li><a href="#grow-shrink">Grow-Shrink (Positive/Negative Winning) mode</a></li>
|
||
<li><a href="#hypnotic">Hypnotic / Sleepy mode (Photosensitive epilepsy/Stimulation overload trigger)</a></li>
|
||
<li><a href="#stim">Stimulation / Calming mode</a></li>
|
||
<li><a href="#other-ideas">Other ideas</a></li>
|
||
</ul></li>
|
||
<li><p><a href="#scripts">Scripts</a></p>
|
||
<ul>
|
||
<li><a href="#colours">Colours selection</a></li>
|
||
<li><a href="#preset">Automate the above gameplay modes</a></li>
|
||
</ul></li>
|
||
<li><p><a href="#variables">Other game variables</a></p>
|
||
<ul>
|
||
<li><a href="#wait">WAIT - Snake speed</a></li>
|
||
<li><a href="#evade">EVADE - Bug evasion frequency</a></li>
|
||
<li><a href="#sizes">SIZE / MAXSIZE - Initial snake / max sizes</a></li>
|
||
<li><a href="#growth">GROW / SHEDS - Growth / Shedding sizes</a></li>
|
||
</ul></li>
|
||
<li><p><a href="#conclusions">Conclusion (and inspirational words for everyone)</a></p></li>
|
||
</ol>
|
||
</div>
|
||
<div id="support">
|
||
<h1 id="testing-terminal-environmentcapabilities">1. <a href="#toc">Testing terminal environment/capabilities</a></h1>
|
||
</div>
|
||
<p>Most people probably won’t have any issue at all but for those who have any
|
||
problems with the terminal see the <a href="terminals.html">terminals.html</a>
|
||
file for more information on the terminal capabilities testing utility I
|
||
include.</p>
|
||
<p>For troubleshooting other problems see <a href="troubleshooting.html">troubleshooting.html</a>
|
||
and <a href="bugs.html">bugs.html</a>.</p>
|
||
<div id="input">
|
||
<h1 id="input-keys">2. <a href="#toc">Input keys</a></h1>
|
||
</div>
|
||
<ul>
|
||
<li>Left, right, up and down <strong>arrow keys</strong>: move that direction.</li>
|
||
<li><code>q</code> (and <code>Q</code>): quit the game.</li>
|
||
<li>Space: pause/resume the game (direction keys will also resume).
|
||
Note that no other keys will resume the game; however if you press a key
|
||
that <code>getch()</code> picks up on and the game is not paused then it will be as if
|
||
you pressed the current direction key (assuming you already moved the snake).</li>
|
||
</ul>
|
||
<h1 id="gameplay">3. <a href="#toc">Gameplay</a></h1>
|
||
<p>Here I will show the initial screen as well as what a few things look like. If
|
||
you don’t feel you need this but you want to configure colours jump to <a href="#colours">colour
|
||
selection</a>. You can also jump to <a href="#modes">gameplay modes</a> or <a href="#variables">game
|
||
variables</a>.</p>
|
||
<p>The bug colour by default is white; the snake head colour is red and the snake
|
||
body colour is green. The walls are cyan.</p>
|
||
<div id="initial">
|
||
<h2 id="gameplay-the-initial-screen"><a href="#toc">Gameplay: The initial screen</a></h2>
|
||
</div>
|
||
<p>When you load the game you will see a screen that looks something like the
|
||
below. Note that the top line is the score/status line: the top wall is at line
|
||
1 and the left wall is column 0. Below I use the coordinates in the X/Y order
|
||
(ncurses is the opposite: Y/X). I will parenthesise the numbers below to refer
|
||
to the number in the diagram:</p>
|
||
<pre><code> X:24/49 Y:8/16 S:5/658 B:0
|
||
##################################################
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# + #
|
||
# #
|
||
# * #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<ul>
|
||
<li><p>The snake (<code>+</code>) is at (24),(8). The bug char is <code>*</code> and the wall char is
|
||
<code>#</code>. When the snake moves the head will be an arrow facing the direction it
|
||
is moving; the body is ‘o’.</p></li>
|
||
<li><p>The top wall is always line (1), the left wall is always column (0), the
|
||
bottom wall is line (16) and the right wall is column (49). If walls are
|
||
impassable and you run into any of these the game is over (you can slither
|
||
at the edge of the wall); else you’ll come out the opposite side.</p></li>
|
||
<li><p>The snake size is (5): but until you start to move it’s technically 1 (even
|
||
if you set <strong>SIZE=0</strong> this applies). This is so that you can decide which
|
||
direction from the centre of the screen. By default the head colour is red;
|
||
the body is green. The snake will grow by one until it reaches the right
|
||
size.</p></li>
|
||
<li><p>The maximum snake size is (997): this is the default; it can be changed but
|
||
it will always have an upper limit depending on the terminal size.</p></li>
|
||
<li><p>The number of bugs eaten so far is 0.</p></li>
|
||
</ul>
|
||
<div id="playing">
|
||
<h2 id="gameplay-playing-the-game"><a href="#toc">Gameplay: Playing the game</a></h2>
|
||
</div>
|
||
<pre><code> X:39/49 Y:8/16 S:5/658 B:0
|
||
##################################################
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# oooo> #
|
||
# #
|
||
# * #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<p>I let the snake grow to its full size (with the head at (39),(8)) and I’m two
|
||
places above the bug so let’s go down:</p>
|
||
<pre><code> X:39/49 Y:9/16 S:5/658 B:0
|
||
##################################################
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# oooo #
|
||
# v #
|
||
# * #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<p>Now you see that the snake is going down and in one move the bug will be eaten.
|
||
Let’s do that:</p>
|
||
<pre><code> X:36/49 Y:10/16 S:10/658 B:1
|
||
##################################################
|
||
# #
|
||
# #
|
||
# #
|
||
# * #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# ^ o #
|
||
# oooo #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<p>Observe that the bug was eaten and a new bug spawned elsewhere. I went left
|
||
three and then up one and could slither on to the bug.</p>
|
||
<div id="walls">
|
||
<h1 id="gameplay-walls"><a href="#toc">Gameplay: Walls</a></h1>
|
||
</div>
|
||
<p>By default walls are passable (<strong>WALLS=1</strong>). Let’s get to full size and go
|
||
through the top wall:</p>
|
||
<pre><code> X:36/49 Y:15/16 S:10/658 B:1
|
||
##################################################
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# * o #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# ^ #
|
||
##################################################</code></pre>
|
||
<p>There you can see I have grown to the full size and went through the top wall;
|
||
the head is now at the opposite wall. Continuing:</p>
|
||
<pre><code> X:36/49 Y:11/16 S:10/658 B:1
|
||
##################################################
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# * o #
|
||
# o #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# ^ #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
##################################################</code></pre>
|
||
<p>I might then have turned to the left and then shortly go up to get the bug. This
|
||
goes on until you lose, quit or win the game.</p>
|
||
<p>When you specify <strong>WALLS=0</strong> the walls become an obstacle that end the game. It
|
||
might look like (I set the starting size to 150 and had only just started):</p>
|
||
<pre><code> X:20/49 Y:2/16 S:150/658 B:0
|
||
##################################################
|
||
# ^ #
|
||
# o #
|
||
# o * #
|
||
# o #
|
||
# o #
|
||
# o #
|
||
# ooooo #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<p>If I continue going up I will see:</p>
|
||
<pre><code> OUCH!
|
||
X:20/49 Y:1/16 S:150/658 B:0</code></pre>
|
||
<div id="cannibalism">
|
||
<h1 id="gameplay-cannibalism"><a href="#toc">Gameplay: Cannibalism</a></h1>
|
||
</div>
|
||
<p>By default cannibalism is disabled (<strong>CANNIBAL=0</strong>) so if you run into yourself it might look
|
||
something like:</p>
|
||
<pre><code> X:45/49 Y:10/16 S:10/658 B:1
|
||
##################################################
|
||
# #
|
||
# #
|
||
# #
|
||
# * #
|
||
# #
|
||
# #
|
||
# #
|
||
# ooooo #
|
||
# ^ o #
|
||
# ooo #
|
||
# #
|
||
# #
|
||
# #
|
||
# #
|
||
##################################################</code></pre>
|
||
<p>If I were to do any movement but turn to the left I would run into myself. I’ll
|
||
go to the right two spaces:</p>
|
||
<pre><code> OW!
|
||
X:47/49 Y:10/16 S:10/658 B:1</code></pre>
|
||
<p>But <strong>CANNIBAL=1</strong> can look very funny both in movement and still especially
|
||
when you go through yourself several times when the snake is rather long. For
|
||
example going through walls and the snake a few times:</p>
|
||
<pre><code> X:4/49 Y:12/16 S:165/658 B:3
|
||
##################################################
|
||
#oo o ooooo o o o#
|
||
# oooo o ooo o#
|
||
# ooooooooooooooooooo#
|
||
# o #
|
||
# oooooooooo o #
|
||
# o o o #
|
||
# o oooo o o #
|
||
# o o o o #
|
||
# ooooooooooooooo #
|
||
# o o* #
|
||
# oo> o o #
|
||
# o oooooooo o #
|
||
#oooooooooooooo o oooo oooooooo#
|
||
# o o o o o #
|
||
##################################################</code></pre>
|
||
<p>I’ll go back through myself now:</p>
|
||
<pre><code> X:6/49 Y:14/16 S:165/658 B:3
|
||
##################################################
|
||
#oo o ooooo o o o#
|
||
# oooo o ooo o#
|
||
# ooooooooooooooooooo#
|
||
# o #
|
||
# oooooooooo o #
|
||
# o o o #
|
||
# o oooo o o #
|
||
# o o o o #
|
||
# ooooooooooooooo #
|
||
# o o* #
|
||
# ooo o o #
|
||
# oo oooooooo o #
|
||
#ooooo>oooooooo o oooo oooooooo#
|
||
# o o o o o #
|
||
##################################################</code></pre>
|
||
<p>If you note that the head is at (6),(14) I will go one more to the right and you
|
||
will see that the arrow has moved over:</p>
|
||
<pre><code> X:7/49 Y:14/16 S:165/658 B:3
|
||
##################################################
|
||
#oo o ooooo o o o#
|
||
# oooo o ooo o#
|
||
# ooooooooooooooooooo#
|
||
# o #
|
||
# oooooooooo o #
|
||
# o o o #
|
||
# o oooo o o #
|
||
# o o o o #
|
||
# ooooooooooooooo #
|
||
# o o* #
|
||
# ooo o o #
|
||
# oo oooooooo o #
|
||
#oooooo>ooooooo o oooo oooooooo#
|
||
# o o o o o #
|
||
##################################################</code></pre>
|
||
<p>Try this: get a reasonable length and then go back on yourself (if you’re going
|
||
left go right etc.) and then after some length (but before you get beyond the
|
||
snake) turn (so that you go perpendicular) and then watch as the snake starts
|
||
unwinding at one place and then suddenly unwinds another direction.</p>
|
||
<p>An example of extreme cannibalism is in the <a href="cannibalism.log.html">cannibalism.log.html</a>
|
||
file. It explains information about the file
|
||
including how to find the bug, head and tail of the snake, at least where it was
|
||
documented. The first run has several dumps. The final example has the snake
|
||
inside itself.</p>
|
||
<div id="shedding">
|
||
<h1 id="gameplay-shedding-stretching"><a href="#toc">Gameplay: Shedding (stretching)</a></h1>
|
||
</div>
|
||
<p>This feature will make you grow by the value of <strong>SHEDS</strong> for every <strong>SHED</strong>
|
||
movements (the counter isn’t incremented when you eat a bug). Basically growing
|
||
without eating a bug (stretching would be better name here).</p>
|
||
<div id="winning">
|
||
<h1 id="gameplay-winning"><a href="#toc">Gameplay: Winning</a></h1>
|
||
</div>
|
||
<p>If you ever get to the <strong>MAXSIZE</strong> the game is won. You can force a win by
|
||
setting the max size to a smaller value than the size you specify (or the
|
||
default) or setting the size to higher than the default (or < 0 which will end
|
||
up being > the max size though I suppose there might be some value that makes it
|
||
less than again - I’m not going to try and figure that out however). Anyway:</p>
|
||
<pre><code> SIZE=-1 ./prog
|
||
YOU WIN!
|
||
X:24/49 Y:8/16 S:658/658 B:0</code></pre>
|
||
<p>Observe that the size isn’t the default 997: because the screen size is too
|
||
small for that value (see [terminals.md][]).</p>
|
||
<p>The reason I chose 997 is that it leaves a bit of a challenge for some (maybe
|
||
most) people but it’s still winnable. Previously even I couldn’t have won unless
|
||
maybe a much bigger screen, if both cheat modes were disabled. I probably could
|
||
win without any cheat mode enabled on my 24” monitor but I probably would need
|
||
at least one cheat mode on my 16” laptop (I don’t need both enabled). I don’t
|
||
think I need either for 997.</p>
|
||
<p>The beauty though is the game can be winnable by anyone since you can define the
|
||
max size to win. Games are meant to be fun: who enjoys games that can never be
|
||
won? Very few probably do and those who do enjoy them it probably are games that
|
||
are relaxing and stimulating (which admittedly this game can be - but still I
|
||
want it to be winnable too).</p>
|
||
<p>Another reason I chose 997: it’s prime and the judges love prime numbers.
|
||
Actually, this is the main reason for the number: I had changed it down to 1000
|
||
but then it occurred to me that there are prime numbers close to 1000 so why not
|
||
choose one instead (that was less than 1000)? And so I did. Another fun fact: at
|
||
the default starting size and growth size of 5 the number of bugs needed before
|
||
the game is won is 199 - also a prime!</p>
|
||
<div id="quitting">
|
||
<h1 id="gameplay-quitting"><a href="#toc">Gameplay: Quitting</a></h1>
|
||
</div>
|
||
<p>If you wish to quit you can hit ‘q’ (case-insensitive). For example:</p>
|
||
<pre><code> X:24/49 Y:8/16 S:5/658 B:0</code></pre>
|
||
<div id="modes">
|
||
<h1 id="gameplay-modes">4. <a href="#toc">Gameplay modes</a></h1>
|
||
</div>
|
||
<p>Here I list a number of different modes of play. In the <a href="bugs.html">bugs.html</a>
|
||
file I even show how there’s a built-in test unit for some
|
||
modes! There are certainly other modes that could be imagined: the modes below
|
||
happened over time and some were simply an accidental discovery or something I
|
||
thought of by a chance; others were thought out from the beginning but were
|
||
improved over time.</p>
|
||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> script sets up some of these automatically; I describe it after
|
||
the modes below.</p>
|
||
<div id="warning">
|
||
<h2 id="photosensitive-epilepsystimulation-overload-trigger-warnings"><a href="#toc">Photosensitive epilepsy/Stimulation overload trigger warnings</a></h2>
|
||
</div>
|
||
<p>If you have <strong>photosensitive epilepsy please be careful</strong> especially with low values
|
||
for both <strong>WAIT</strong> and <strong>EVADE</strong>. It appears that the <a href="https://www.epilepsysociety.org.uk/photosensitive-epilepsy#.Xjgpwi2ZOgQ">number of hertz (flashes)
|
||
per second triggering seizures</a> is wide but depending on the variables it
|
||
easily can be in the range.</p>
|
||
<p>There are different patterns and lights flashing at different speeds so please
|
||
exercise caution. This could trigger seizures and <strong>it might also be too much
|
||
stimulation for some people.</strong></p>
|
||
<p><strong>Please be careful of these if these types of things have ever affected you or if
|
||
you have any form of epilepsy. Thank you.</strong></p>
|
||
<div id="drawing">
|
||
<h2 id="gameplay-mode-drawing-practice-mode"><a href="#toc">Gameplay mode: Drawing / Practice mode</a></h2>
|
||
</div>
|
||
<p>If you want to draw the snake wherever you like on the screen you can do this by
|
||
modifying the wait time (for input) to -1 (or any value < 0): then the snake
|
||
does not move until you press a movement key. For example:</p>
|
||
<pre><code> WAIT=-1 ./prog</code></pre>
|
||
<p>When you eat a bug the snake will grow and you can draw more. If you want to
|
||
make it so you can go through yourself:</p>
|
||
<pre><code> WAIT=-1 CANNIBAL=1 ./prog</code></pre>
|
||
<p>If you don’t want to start out so small (i.e. you want to be able to draw more
|
||
quickly) you can just set the size to a bigger number (and you could do the same
|
||
with growth and moult/shed):</p>
|
||
<pre><code> SIZE=50 CANNIBAL=1 WAIT=-1 ./prog</code></pre>
|
||
<p>Do note that although you’re a bigger size you still grow one movement at a
|
||
time.</p>
|
||
<p>Okay but then if you get too many bugs the drawing will be over. If this proves
|
||
to be a problem simply do:</p>
|
||
<pre><code> SIZE=100 CANNIBAL=1 WAIT=-1 GROW=0 ./prog</code></pre>
|
||
<p>Or something like that (maybe make the size bigger but that’s up to you). You
|
||
could also set the max size to be the highest possible by saying</p>
|
||
<pre><code> MAXSIZE=-1</code></pre>
|
||
<p>Which I’ve done in the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> script.</p>
|
||
<p>I discuss how this mode works in <a href="obfuscation.html">obfuscation.html</a>.</p>
|
||
<p>Here’s an example run where I spelt ‘SNAKE’. As you can see it’s far from
|
||
perfect: the snake after all does not leave gaps and the game does not support
|
||
diagonal movement and I also made a mistake and had to modify what I was aiming
|
||
for. But you can consider this mode drawing or practice mode.</p>
|
||
<pre><code> oooooooooo ooooo o oo ooooo
|
||
o o oo o oo o ooo o
|
||
oooo o oo ooooooo oooo ooooo
|
||
o o ooo oo o ooo o
|
||
oooo o oo ooo oooooooo></code></pre>
|
||
<div id="auto">
|
||
<h2 id="gameplay-mode-computer-playing-automatic-mode-photosensitive-epilepsystimulation-overload-trigger"><a href="#toc">Gameplay mode: Computer playing / Automatic mode (Photosensitive epilepsy/Stimulation overload trigger)</a></h2>
|
||
</div>
|
||
<p><strong>Photosensitive epilepsy/stimulation overload trigger warning:</strong>
|
||
For those who have epilepsy or are susceptible to stimulation overload from
|
||
flashing lights please do be careful with this mode. Depending on your
|
||
susceptibility this could very well trigger seizures or other discomforts and I
|
||
wouldn’t want that to happen to anyone. This mode has a lot of flashing of
|
||
different colours and depending on the exact parameters you specify it could
|
||
easily be in the trigger range for epilepsy but potentially stimulation overload
|
||
too.</p>
|
||
<p>If you’re still here you can create this effect like:</p>
|
||
<pre><code> WAIT=0 WALLS=1 CANNIBAL=1 ./prog</code></pre>
|
||
<p>As long as the bug evades you’ll find that the snake is growing because it’s
|
||
actually eating bugs; the computer is actually playing the game by itself! You
|
||
can still move the snake though it won’t seem like you have much control over
|
||
it. If you pause the game you can see that it’s bigger (you probably will be
|
||
able to even without pausing it).</p>
|
||
<p>Basically the snake is moving so fast that because the bug evades the bug will
|
||
inevitably move in the snake path’s and therefore be eaten.</p>
|
||
<p>You might find it goes quicker if you set the evade count to a lower value for
|
||
example 1. Or you might not. But as long as the bug moves the computer can play
|
||
by itself.</p>
|
||
<p>Quick tests suggest that bigger dimensions it gets bigger quicker. But it also
|
||
seems to take longer for it to get a bug as it gets longer. I believe these
|
||
happen because the bug has to find a X and Y coordinate that’s not occupied and
|
||
so with fewer available it has a harder time finding a place in that one line.</p>
|
||
<div id="auto-variations">
|
||
<h3 id="computer-player-variations"><a href="#toc">Computer player variations</a></h3>
|
||
</div>
|
||
<p>Here’s how to make the bug move every time the snake moves:</p>
|
||
<pre><code> CANNIBAL=1 WALLS=1 WAIT=0 EVADE=1 ./prog</code></pre>
|
||
<h4 id="help-the-computer-win-fairly-quickly">Help the computer win fairly quickly</h4>
|
||
<p>If you want to see the game ‘win’ try something like:</p>
|
||
<pre><code> CANNIBAL=1 WALLS=1 WAIT=0 EVADE=1 MAXSIZE=10 ./prog</code></pre>
|
||
<h4 id="negative-growth-shrink-automatic-mode">Negative growth (Shrink) Automatic mode</h4>
|
||
<p>Here’s a fun one I just thought of (a long time after these other modes were
|
||
thought of):</p>
|
||
<pre><code> WAIT=0 EVADE=1 GROW=-1 SIZE=9 MAXSIZE=10 CANNIBAL=1 ./prog</code></pre>
|
||
<p>What you’ll see is that first the snake will get to the size of 9 - whether it
|
||
shows to be 10 characters depends on whether or not it gets a bug before it can
|
||
get to that length - and then it’ll start shrinking until it’s just the head
|
||
then the head again (i.e. 1 then 0 in size) and then win! This is also in the
|
||
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> script.</p>
|
||
<h4 id="adjusting-the-timespeed">Adjusting the time/speed</h4>
|
||
<p>Of course you can also do something like:</p>
|
||
<pre><code> WAIT=5 WALLS=1 CANNIBAL=1 ./prog</code></pre>
|
||
<p>Which although might not seem like it is significantly slower.</p>
|
||
<h4 id="moving-the-snake-about-to-create-patterns">Moving the snake about to create patterns</h4>
|
||
<p>If you press different direction keys in some pattern you will see a pattern
|
||
form too (entirely dependent on how fast you react, what keys you press and I
|
||
suppose also how much the bug moves and the chance of being eaten also).</p>
|
||
<h4 id="other-ideas">Other ideas</h4>
|
||
<p>Here’s an idea: how many moves is needed to make it possible to have some sort
|
||
of success in catching bugs? Obviously the dimensions will affect this value.</p>
|
||
<p>How long will it take for the snake to run into itself? For instance by doing:</p>
|
||
<pre><code> WAIT=0 ./prog</code></pre>
|
||
<p>On my 13” MacBook Pro (replaced later by a 16”) at the default settings going
|
||
horizontally the snake ran into itself at:</p>
|
||
<pre><code> OW!
|
||
X:57/156 Y:20/41 S:155/997 B:30</code></pre>
|
||
<p>What if you set the size to a high value? The lowest? There are bound to be
|
||
other games to play with this feature!</p>
|
||
<div id="grow-shrink">
|
||
<h2 id="gameplay-mode-grow-shrink-mode-positive-and-negative-winning"><a href="#toc">Gameplay mode: Grow-Shrink mode (Positive and Negative Winning)</a></h2>
|
||
</div>
|
||
<p>In this mode you’re simultaneously growing and shrinking but because the max
|
||
size is unsigned you can win both by shrinking to the point of losing your body
|
||
or growing to the full size directly. This is how it works:</p>
|
||
<p>You have a negative shedding growth and a positive growth size: negative and
|
||
positive winning. Depending on the parameters specified it might go one way over
|
||
the other. Try:</p>
|
||
<pre><code> SIZE=150 SHEDS=-5 GROW=10 SHED=50 MAXSIZE=250 ./prog</code></pre>
|
||
<p>What this does is set the size to 150 (to make it not go down so quickly) and
|
||
then for each bug you eat it adds 5 to the size; for every 50 moves (that you
|
||
don’t get the bug) you shrink by 5. You will find that at times you might only
|
||
decrease in size but then at other times - depending on size of screen and how
|
||
lucky you are with where the bug is relative to where it last was - you might be
|
||
growing. Combining this with the drawing mode could be interesting but I never
|
||
actually tried it.</p>
|
||
<p>The parameters above were chosen after playing with the mode a bit to find a
|
||
value that wouldn’t take that much time but still would pose a challenge. One
|
||
could reverse it so that one shrinks more than growing.</p>
|
||
<p>The <a href="ferguson1/crazy.log.html">crazy.log.html</a> file has several screen
|
||
dumps with this idea.</p>
|
||
<p>You could also have it so that eating a bug makes you shrink and moving so many
|
||
moves you grow. I tried this and for me it was far more fun. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a>
|
||
also has this mode:</p>
|
||
<pre><code> SIZE=100 SHEDS=5 GROW=-10 SHED=50 MAXSIZE=250 ./prog</code></pre>
|
||
<p>Obviously there are many other variations. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> script has some
|
||
of them (the above is option 5; others are 4, 15 and 16 but only options 4 and 5
|
||
are called Grow / Shrink).</p>
|
||
<div id="hypnotic">
|
||
<h2 id="hypnotic-sleepy-mode-photosensitive-epilepsystimulation-overload-trigger"><a href="#toc">Hypnotic / Sleepy mode (Photosensitive epilepsy/Stimulation overload trigger)</a></h2>
|
||
</div>
|
||
<p><strong>Photosensitive epilepsy/stimulation overload trigger warning:</strong>
|
||
For those who have epilepsy or are susceptible to stimulation overload from
|
||
flashing lights and patterns please do be careful with this mode. Depending on your
|
||
susceptibility this could very well trigger seizures or other discomforts and I
|
||
wouldn’t want that to happen to anyone. The default wait time is 231ms, the
|
||
typical range of seizures is 3 to 30 flashes per seconds (but can be higher) and
|
||
that means that at <strong>EVADE=1</strong> every 231ms there will be a flash in addition to the
|
||
snake moving too.</p>
|
||
<p>Anyway this might sound absurd but it can be somewhat hypnotic by doing:</p>
|
||
<pre><code> EVADE=1 CANNIBAL=1 ./prog</code></pre>
|
||
<p>And just moving the snake about not trying to catch any bugs - just let whatever
|
||
happens happen.</p>
|
||
<div id="stim">
|
||
<h2 id="gameplay-mode-stimulation-calming-mode"><a href="#toc">Gameplay mode: Stimulation / Calming mode</a></h2>
|
||
</div>
|
||
<p>If you just need something to stimulate your mind to keep you calm or simply you
|
||
want to play a game without having to worry about winning or losing you can set
|
||
the growth size to 0 and then just move the snake round and round eating bugs
|
||
until you want to quit. You can enable cannibalism so that you don’t have to
|
||
worry about even running into yourself and losing:</p>
|
||
<pre><code> GROW=0 CANNIBAL=1 ./prog</code></pre>
|
||
<div id="expansibility">
|
||
<h2 id="gameplay-mode-expansibility"><a href="#toc">Gameplay mode: Expansibility</a></h2>
|
||
</div>
|
||
<p>As I was writing this document and the game modes I have thought of other game
|
||
modes (they were added) and I have come back to this document to add more modes.
|
||
That’s the beauty of the variables I have implemented: together with the
|
||
imagination and even just chance different modes of play can be devised. The
|
||
drawing mode was a happy chance of how the <code>timeout()</code> function works for
|
||
example.</p>
|
||
<p>As a person who was heavily involved in MUD development and design I know very
|
||
well how games need to be fun and have different options, not be too easy but
|
||
not be too hard either. And a game developer who does not play their games is a
|
||
game developer who is detached from their player base and the wants and needs
|
||
are therefore disregarded if even heard. I have played this game a lot for this
|
||
reason as well as I simply enjoy it and thinking up new modes.</p>
|
||
<h1 id="scripts">5. <a href="#toc">Scripts</a></h1>
|
||
<p>The following scripts are provided to simplify and automate some of the things
|
||
this file discusses as well as allowing to easily change the colours.</p>
|
||
<div id="colours">
|
||
<h2 id="colours-selection-snake-colours"><a href="#toc">Colours selection: snake-colours</a></h2>
|
||
</div>
|
||
<p>To do this use the <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/snake-colours.sh">snake-colours.sh</a> script like so:</p>
|
||
<pre><code> ./snake-colours.sh</code></pre>
|
||
<p>If you want to pass in specific variables you can do that too e.g.:</p>
|
||
<pre><code> CANNIBAL=1 ./snake-colours.sh</code></pre>
|
||
<p>The script will prompt you for the colour of the walls, snake head, body and the
|
||
bug.</p>
|
||
<div id="preset">
|
||
<h2 id="automate-the-above-gameplay-modes"><a href="#toc">Automate the above gameplay modes</a></h2>
|
||
</div>
|
||
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> script has the gameplay modes described in this file and is menu
|
||
based (there might be differences and some of the modes I include a variation).
|
||
The script tests the terminal (allowing you to continue even if problems are
|
||
detected), prompts you if you want to select colours (like those in
|
||
snake-colours.sh above) and then gives you a list of game modes to play. You can
|
||
pass in the game variables but note that if you pass in a variable that the mode
|
||
you choose uses then the script will override what you pass in.</p>
|
||
<p>To use you can do something like:</p>
|
||
<pre><code> ./play.sh</code></pre>
|
||
<p>Or to make it so walls are an obstacle:</p>
|
||
<pre><code> WALLS=0 ./play.sh</code></pre>
|
||
<div id="variables">
|
||
<h1 id="notes-about-some-of-the-game-variables">6. <a href="#toc">Notes about some of the game variables</a></h1>
|
||
</div>
|
||
<p>The game variables can be used for a variety of things including different
|
||
gameplay modes (as shown above) but here are some general notes about a few of them.</p>
|
||
<div id="wait">
|
||
<h2 id="wait-snake-speed"><a href="#toc">WAIT: Snake speed</a></h2>
|
||
</div>
|
||
<p>Besides the different game modes, if you find it too fast/slow you can change it
|
||
to a value that’s better for you. Remember it’s a wait time so if you want the
|
||
snake to move slower you have to increase the wait time!</p>
|
||
<div id="evade">
|
||
<h2 id="evade-bug-evasion-frequency"><a href="#toc">EVADE: Bug evasion frequency</a></h2>
|
||
</div>
|
||
<p>For every <strong>EVADE</strong> snake movements the bug will try and find a new place to
|
||
occupy. It might be very close to it and I do not ensure it’s a new place at
|
||
all.</p>
|
||
<p>Each time the bug is placed the counter will be reset whether from eating the
|
||
bug or not reaching it in time. Default 300 moves.</p>
|
||
<p>This can help you get out of a trap but it can also sometimes make it harder.</p>
|
||
<div id="sizes">
|
||
<h2 id="size-maxsize-initial-max-snake-sizes"><a href="#toc">SIZE / MAXSIZE: Initial / Max snake sizes</a></h2>
|
||
</div>
|
||
<p>997 might be a bit high for many people. Or maybe you don’t have enough time. Or
|
||
you’re not in the mood to lose. Or you want to get close to a size you were last
|
||
time but quickly. It might be in conjunction with drawing mode.</p>
|
||
<p>Note on snake size: there’s a stated size (in the score line) which is what
|
||
the snake will ‘populate’ in the snake arrays and the visible size: as I have
|
||
discussed here and there the snake doesn’t grow immediately so it takes time
|
||
before the snake is visibly that many characters. In other words just because it
|
||
says SIZE 29 doesn’t mean it will instantly be 29 characters on the screen.</p>
|
||
<div id="growth">
|
||
<h2 id="grow-sheds-growth-shedding-sizes"><a href="#toc">GROW / SHEDS : Growth / Shedding sizes</a></h2>
|
||
</div>
|
||
<p>Similar to the initial size. Notice that the above point on size applies here:
|
||
it will take the number of movements before it is ‘its full size’.</p>
|
||
<div id="conclusions">
|
||
<h1 id="conclusion-and-inspirational-words-for-everyone">7. <a href="#toc">Conclusion (and inspirational words for everyone)</a></h1>
|
||
</div>
|
||
<p>I believe that this file has given more than enough information for anyone to
|
||
get an idea of what is possible with my implementation of Snake. I realise also
|
||
that most people won’t have read this far and that’s quite all right; I’m very
|
||
thorough and pay attention to details obsessively. Creating this game was a
|
||
delight and I am quite proud of what I have done.</p>
|
||
<p>Thank you for whatever level of attention you felt you could or wanted to give
|
||
and enjoy it in whatever way you see fit!</p>
|
||
<p><strong>Much more importantly is that Snake aside I hope I have demonstrated how with
|
||
the imagination and creativity almost anything is possible.</strong> This is something
|
||
<strong>that applies in our world in every way and <em>everyone</em> can do something amazing if
|
||
they believe in themselves!</strong> I would have never thought this the case for me
|
||
years ago but I know it’s true now. <strong>Believe in yourself. Always.</strong></p>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<p>Jump to: <a href="#">top</a></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/gameplay.md -->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.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.default.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%2Fgameplay.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>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.default.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|