force use of pandoc version >= 3.1.12.2
The `bin/pandoc-wrapper.sh` tool will verify that the ssytem has a recent enough version of `pandoc(1)`. We explain why we insist on `pandoc(1)`. version >= 3.1.12.2 in comments where the $PANDOC_MIN_VERSION is set. Added `--wrap=preserve` as a default argument to `pandoc(1)`. While this change will impact every HTML file generated, we believe this will improve the ability of someone to look at the generated HTML and correlate with the original markdown. Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17" to "1.4.3 2024-03-18". Performed `make www` to achieve all of the above and to generate HTML using the new `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+116
-156
@@ -130,8 +130,8 @@
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Kevin_Pulo">Kevin Pulo</a><br>
|
||||
Location: <a href="../../location.html#AU">AU</a> - <em>Commonwealth of
|
||||
Australia</em> (<em>Australia</em>) <br><br></li>
|
||||
Location: <a href="../../location.html#AU">AU</a> - <em>Commonwealth of Australia</em> (<em>Australia</em>)
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -141,35 +141,30 @@ Australia</em> (<em>Australia</em>) <br><br></li>
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span></span></code></pre></div>
|
||||
<p>There is another version which lets you use the arrow keys rather
|
||||
than the more awkward <code>,</code> and <code>.</code> keys. See <a
|
||||
href="#alternate-code">alternate code</a> below.</p>
|
||||
<p>There is another version which lets you use the arrow keys rather than the more
|
||||
awkward <code>,</code> and <code>.</code> keys. See <a href="#alternate-code">alternate code</a> below.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<pre><code>STATUS: INABIAF - please **DO NOT** fix</code></pre>
|
||||
<p>For more detailed information see <a
|
||||
href="../../bugs.html#2001_kev">2001 kev bugs</a>.</p>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2001_kev">2001 kev bugs</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> <span class="co"># in one terminal</span></span>
|
||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> hostname <span class="co"># in another terminal</span></span></code></pre></div>
|
||||
<p>NOTE: each player’s paddle is at the bottom and the opponent at the
|
||||
top.</p>
|
||||
<p>NOTE: each player’s paddle is at the bottom and the opponent at the top.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> <span class="co"># in one terminal</span></span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> localhost <span class="co"># in another terminal on the same host</span></span></code></pre></div>
|
||||
<p>If you need to change the speed you can reconfigure it like (say for
|
||||
over a network and not the same host):</p>
|
||||
<p>If you need to change the speed you can reconfigure it like (say
|
||||
for over a network and not the same host):</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> clobber SPEED=50 all <span class="co"># original default value which is very fast</span></span></code></pre></div>
|
||||
<p>If you wish to change the port you can do so like:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> clobber PORT=3773 all</span></code></pre></div>
|
||||
<p>Of course if you want a port < 1024 you’ll need to be root so
|
||||
don’t do that.</p>
|
||||
<p>And if you know what you’re doing you can redefine the call to the
|
||||
<code>socket(2)</code> syscall with the <code>l_</code> macro, changing
|
||||
the <code>L</code> variable like one would <code>PORT</code>. Of course
|
||||
you can do more than one at the same time. For instance to change the
|
||||
<p>Of course if you want a port < 1024 you’ll need to be root so don’t do that.</p>
|
||||
<p>And if you know what you’re doing you can redefine the call to the <code>socket(2)</code>
|
||||
syscall with the <code>l_</code> macro, changing the <code>L</code> variable like one would <code>PORT</code>. Of
|
||||
course you can do more than one at the same time. For instance to change the
|
||||
speed and port:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> clobber SPEED=512 PORT=3773 all</span></code></pre></div>
|
||||
<p>If you have <code>xterm</code> try on one system:</p>
|
||||
@@ -178,32 +173,27 @@ speed and port:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev localhost<span class="kw">&</span></span></code></pre></div>
|
||||
<p>This might look nicer than just the terminal itself.</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>This version allows you to use arrow keys on the keyboard rather than
|
||||
the more awkward <code>,</code> and <code>.</code> keys to move your
|
||||
paddle.</p>
|
||||
<p>This version allows you to use arrow keys on the keyboard rather than the more
|
||||
awkward <code>,</code> and <code>.</code> keys to move your paddle.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<div class="sourceCode" id="cb10"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt</span></code></pre></div>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt</span></code></pre></div>
|
||||
<p>You can reconfigure the macros described above in the same way.</p>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>kev.alt</code> as you would <code>kev</code>.</p>
|
||||
<p>What happens if you use both, one in one terminal and the other in
|
||||
another terminal?</p>
|
||||
<p>What happens if you use both, one in one terminal and the other in another
|
||||
terminal?</p>
|
||||
<h3 id="alternate-try">Alternate try:</h3>
|
||||
<p>If you have <code>xterm</code> try on one system:</p>
|
||||
<div class="sourceCode" id="cb11"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev.alt <span class="kw">&</span></span></code></pre></div>
|
||||
<div class="sourceCode" id="cb11"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev.alt <span class="kw">&</span></span></code></pre></div>
|
||||
<p>and then the other, the client system:</p>
|
||||
<div class="sourceCode" id="cb12"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev.alt localhost<span class="kw">&</span></span></code></pre></div>
|
||||
<div class="sourceCode" id="cb12"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev.alt localhost<span class="kw">&</span></span></code></pre></div>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Continuing with this year’s “retro game” theme, this is another old
|
||||
game; arguably, one of the oldest. Requires a functioning network, and
|
||||
curses.</p>
|
||||
<p>The graphics aren’t the impressive part; the graphics and network
|
||||
are. How many games come out at $50 and still require you to wait for a
|
||||
patch to come out before you can play multiplayer? This one works out of
|
||||
the box.</p>
|
||||
<p>Continuing with this year’s “retro game” theme, this is another old game;
|
||||
arguably, one of the oldest. Requires a functioning network, and curses.</p>
|
||||
<p>The graphics aren’t the impressive part; the graphics and network are.
|
||||
How many games come out at $50 and still require you to wait for a patch
|
||||
to come out before you can play multiplayer? This one works out of the
|
||||
box.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<p><strong>NETWORK PONG!</strong></p>
|
||||
<h3 id="requirements">REQUIREMENTS</h3>
|
||||
@@ -213,159 +203,129 @@ the box.</p>
|
||||
<li><code>usleep(3)</code></li>
|
||||
</ul>
|
||||
<h3 id="description">DESCRIPTION</h3>
|
||||
<p>This program is a two-player networked version of the eighties arcade
|
||||
classic, <a href="https://en.wikipedia.org/wiki/Pong">Pong</a>. It uses
|
||||
standard TCP sockets to communicate over the net, and
|
||||
<code>ncurses</code> for display. It supports variable terminal sizes
|
||||
(though both players must have the same terminal size) and game speeds.
|
||||
Each player has a paddle to hit the ball, and you get points for getting
|
||||
the ball past your opponent’s paddle. It’s pretty fun! :)</p>
|
||||
<p>This program is a two-player networked version of the eighties arcade classic,
|
||||
<a href="https://en.wikipedia.org/wiki/Pong">Pong</a>. It uses standard TCP sockets to
|
||||
communicate over the net, and <code>ncurses</code> for display. It supports variable
|
||||
terminal sizes (though both players must have the same terminal size) and game
|
||||
speeds. Each player has a paddle to hit the ball, and you get points for
|
||||
getting the ball past your opponent’s paddle. It’s pretty fun! :)</p>
|
||||
<h3 id="running">RUNNING</h3>
|
||||
<p>Run the server first without any command line arguments, i.e.</p>
|
||||
<div class="sourceCode" id="cb13"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span></span></code></pre></div>
|
||||
<p>Then run the client with a single command line argument which is the
|
||||
name of the machine running the server, e.g.</p>
|
||||
<div class="sourceCode" id="cb14"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> localhost</span></code></pre></div>
|
||||
<p>Make sure that the terminals on both ends are the same size. Also,
|
||||
the TCP port number (by default 5455) specified in the <a
|
||||
href="Makefile">Makefile</a> mustn’t be blocked by a firewall.</p>
|
||||
<p>Here’s a good quick example to see it in action on your own machine,
|
||||
assuming you have <code>Xwindows</code>:</p>
|
||||
<div class="sourceCode" id="cb15"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev <span class="kw">&</span></span>
|
||||
<div class="sourceCode" id="cb13"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span></span></code></pre></div>
|
||||
<p>Then run the client with a single command line argument which is
|
||||
the name of the machine running the server, e.g.</p>
|
||||
<div class="sourceCode" id="cb14"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./kev</span> localhost</span></code></pre></div>
|
||||
<p>Make sure that the terminals on both ends are the same size. Also, the TCP port
|
||||
number (by default 5455) specified in the <a href="Makefile">Makefile</a> mustn’t be
|
||||
blocked by a firewall.</p>
|
||||
<p>Here’s a good quick example to see it in action on your own
|
||||
machine, assuming you have <code>Xwindows</code>:</p>
|
||||
<div class="sourceCode" id="cb15"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev <span class="kw">&</span></span>
|
||||
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="ex">xterm</span> <span class="at">-geometry</span> 80x40 <span class="at">-fg</span> green <span class="at">-bg</span> black <span class="at">-fn</span> 9x15bold <span class="at">-e</span> ./kev localhost<span class="kw">&</span></span></code></pre></div>
|
||||
<h3 id="playing">PLAYING</h3>
|
||||
<p>Your paddle is the one at the bottom of the screen, your opponent is
|
||||
at the top. To move your paddle left, hold down <code>,</code>
|
||||
(i.e. <code><</code> but don’t press shift). To move your paddle
|
||||
right, hold down <code>.</code>. To quit, either player may press
|
||||
<code>q</code>.</p>
|
||||
<p>The current score is shown on the left side of the halfway line. Your
|
||||
score is the lower number, your opponents score is the upper number.
|
||||
Your score is the number of times your opponent has missed the ball.</p>
|
||||
<p>Your paddle is the one at the bottom of the screen, your opponent
|
||||
is at the top. To move your paddle left, hold down <code>,</code> (i.e. <code><</code>
|
||||
but don’t press shift). To move your paddle right, hold down <code>.</code>.
|
||||
To quit, either player may press <code>q</code>.</p>
|
||||
<p>The current score is shown on the left side of the halfway line.
|
||||
Your score is the lower number, your opponents score is the upper
|
||||
number. Your score is the number of times your opponent has
|
||||
missed the ball.</p>
|
||||
<p>You can control the speed of the ball by the motion of your paddle
|
||||
when the ball hits it. If your paddle is still, then the ball just
|
||||
bounces normally off it. If your paddle is moving in the same direction
|
||||
as the ball, then the ball’s speed in that direction will increase. If
|
||||
your paddle is moving in the opposite direction to the ball, then the
|
||||
ball’s speed in that direction will decrease (or if the ball is going
|
||||
slowly enough, it’ll turn around).</p>
|
||||
<p>You might want to increase your keyboard repeat rate before playing.
|
||||
On the Linux console try <code>kbdrate -r 24.0 -d 250</code>
|
||||
(<code>kbdrate</code> might be “hidden” from normal users in
|
||||
<code>/sbin</code>, and you might need to be root anyway), in
|
||||
<code>Xwindows</code> try <code>xset r rate 250 24</code> (find out your
|
||||
current rate first with <code>xset q</code>, so that you can reset it
|
||||
later).</p>
|
||||
when the ball hits it. If your paddle is still, then the ball
|
||||
just bounces normally off it. If your paddle is moving in the
|
||||
same direction as the ball, then the ball’s speed in that
|
||||
direction will increase. If your paddle is moving in the opposite
|
||||
direction to the ball, then the ball’s speed in that direction
|
||||
will decrease (or if the ball is going slowly enough, it’ll turn
|
||||
around).</p>
|
||||
<p>You might want to increase your keyboard repeat rate before
|
||||
playing. On the Linux console try <code>kbdrate -r 24.0 -d 250</code>
|
||||
(<code>kbdrate</code> might be “hidden” from normal users in <code>/sbin</code>, and you
|
||||
might need to be root anyway), in <code>Xwindows</code> try <code>xset r rate 250 24</code> (find out your current rate first with <code>xset q</code>, so that you
|
||||
can reset it later).</p>
|
||||
<p>Look below in the Building section for info on how to speed up or
|
||||
slow down the game (useful if you increase or decrease the terminal
|
||||
size).</p>
|
||||
slow down the game (useful if you increase or decrease the
|
||||
terminal size).</p>
|
||||
<h3 id="building">BUILDING</h3>
|
||||
<p>Just run <code>make</code> to use the Makefile as above. The
|
||||
<code>SPEED</code> variable in the Makefile controls the speed of the
|
||||
game (defaults to <code>50</code>). This speed is the delay between
|
||||
frames in milliseconds. Thus a value of 0 will make the game go as fast
|
||||
as your network can handle, and values less than 50 are useful for
|
||||
larger terminals or more exciting games. The program needs bandwidth
|
||||
equal to 1/s bytes per second (where <code>s</code> is the speed value).
|
||||
Any latency on the network will be added to <code>s</code> - so you
|
||||
should probably subtract any latency from the value of <code>s</code>
|
||||
you want to have. Given that <code>loopback</code> and fast Ethernet
|
||||
LANs are both much less than 1ms of latency, you should only need to
|
||||
worry about this if you plan on playing over a slower link like a cable
|
||||
modem, DSL, or (God-forbid) dial-up.</p>
|
||||
<p>Just run <code>make</code> to use the Makefile as above. The <code>SPEED</code> variable in the
|
||||
Makefile controls the speed of the game (defaults to <code>50</code>). This speed is the
|
||||
delay between frames in milliseconds. Thus a value of 0 will make the game go
|
||||
as fast as your network can handle, and values less than 50 are useful for
|
||||
larger terminals or more exciting games. The program needs bandwidth equal to
|
||||
1/s bytes per second (where <code>s</code> is the speed value). Any latency on the network
|
||||
will be added to <code>s</code> - so you should probably subtract any latency from the
|
||||
value of <code>s</code> you want to have. Given that <code>loopback</code> and fast Ethernet LANs are
|
||||
both much less than 1ms of latency, you should only need to worry about this if
|
||||
you plan on playing over a slower link like a cable modem, DSL, or (God-forbid)
|
||||
dial-up.</p>
|
||||
<p>The TCP port to use for network communications is specified by the
|
||||
<code>PORT</code> variable in the Makefile. If the default of
|
||||
<code>5455</code> is blocked for whatever reason, you can change it to
|
||||
something else. Of course if you use a port < 1024, you’ll need to be
|
||||
root.</p>
|
||||
<code>PORT</code> variable in the Makefile. If the default of <code>5455</code> is
|
||||
blocked for whatever reason, you can change it to something else.
|
||||
Of course if you use a port < 1024, you’ll need to be root.</p>
|
||||
<h3 id="obfuscation">OBFUSCATION</h3>
|
||||
<p>The program’s broad structure is fairly straightforward, but
|
||||
individual tasks are rarely done in a straightforward manner. ;)</p>
|
||||
<p>Identifier names have mostly been chosen to resemble paddles and
|
||||
balls, and to generally decrease readability.</p>
|
||||
<p>The source has been cleverly formatted to resemble one of the paddles
|
||||
from the game, rotated 90 degrees. ;) (The “source paddle” has
|
||||
approximately the same aspect ratio as the game at 80 columns wide,
|
||||
which is 1:10.)</p>
|
||||
<p>Finally, the number of “non-whitespace characters” (as defined by the
|
||||
rules) in the file is exactly 2048, which I think is rather unexpectedly
|
||||
cool. :)</p>
|
||||
<p>The source has been cleverly formatted to resemble one of the
|
||||
paddles from the game, rotated 90 degrees. ;) (The “source
|
||||
paddle” has approximately the same aspect ratio as the game at 80
|
||||
columns wide, which is 1:10.)</p>
|
||||
<p>Finally, the number of “non-whitespace characters” (as defined by
|
||||
the rules) in the file is exactly 2048, which I think is rather
|
||||
unexpectedly cool. :)</p>
|
||||
<h3 id="bugs">BUGS</h3>
|
||||
<p>There are 3 warnings when I compile with gcc 2.95.3
|
||||
(<code>-Wall -ansi -pedantic</code>) on my Linux system, but all are
|
||||
completely harmless.</p>
|
||||
<p>I don’t like the curses and/or termcaps/terminfos on IRIX and Solaris
|
||||
(the only two non-Linux systems I have access to). Despite calling
|
||||
<code>timeout(0);</code>, <code>notimeout(win, TRUE);</code>,
|
||||
<code>nodelay(win, TRUE);</code> and/or
|
||||
<code>keypad(win, FALSE);</code>, it still seems to force a delay into
|
||||
calls to <code>getch()</code> - I’m guessing at a termcap/terminfo
|
||||
level. At any rate, I can’t seem to force no delay. This is a shame,
|
||||
because it basically plays havoc with the input code, particularly the
|
||||
read-ahead canceller. It still works, but not nearly as well (key
|
||||
presses are dodgy and holding down keys doesn’t always work), and so I
|
||||
<em>much</em> prefer and recommend Linux <code>libncurses</code>.</p>
|
||||
<p>Sometimes when <code>q</code> is pressed in one, the other will crash
|
||||
out with <code>Broken pipe</code>.</p>
|
||||
<p>There are 3 warnings when I compile with gcc 2.95.3 (<code>-Wall -ansi -pedantic</code>) on my Linux system, but all are completely harmless.</p>
|
||||
<p>I don’t like the curses and/or termcaps/terminfos on IRIX and
|
||||
Solaris (the only two non-Linux systems I have access to).
|
||||
Despite calling <code>timeout(0);</code>, <code>notimeout(win, TRUE);</code>, <code>nodelay(win, TRUE);</code> and/or <code>keypad(win, FALSE);</code>, it still seems to force a delay
|
||||
into calls to <code>getch()</code> - I’m guessing at a termcap/terminfo level.
|
||||
At any rate, I can’t seem to force no delay. This is a shame,
|
||||
because it basically plays havoc with the input code, particularly
|
||||
the read-ahead canceller. It still works, but not nearly as well
|
||||
(key presses are dodgy and holding down keys doesn’t always work),
|
||||
and so I <em>much</em> prefer and recommend Linux <code>libncurses</code>.</p>
|
||||
<p>Sometimes when <code>q</code> is pressed in one, the other will crash out
|
||||
with <code>Broken pipe</code>.</p>
|
||||
<p>If the specified port can’t be bound or connected to, the program
|
||||
segfaults.</p>
|
||||
<p>If your terminal is too wide (we’re talking gigantic here - over 500
|
||||
characters wide) then the program can segfault. It’s also possible to
|
||||
crash the program a player scores over a billion points (1e9). Maybe you
|
||||
can consider that the goal… ;)</p>
|
||||
<p>If your terminal is too wide (we’re talking gigantic here - over
|
||||
500 characters wide) then the program can segfault. It’s also
|
||||
possible to crash the program a player scores over a billion
|
||||
points (1e9). Maybe you can consider that the goal… ;)</p>
|
||||
<p>If you run the client and server on different architectures, both
|
||||
architectures need to have the same character systems (i.e. don’t try
|
||||
mixing ASCII and EBCDIC). It is independent of endianness though.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||||
License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||||
Reserved. You are free to share and adapt this file under the terms of
|
||||
this license:</p>
|
||||
architectures need to have the same character systems (i.e. don’t
|
||||
try mixing ASCII and EBCDIC). It is independent of endianness
|
||||
though.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0 License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
|
||||
You are free to share and adapt this file under the terms of this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<!-- 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 -->
|
||||
|
||||
<h1 id="inventory-for-2001kev"><a name="inventory"></a>Inventory for
|
||||
2001/kev</h1>
|
||||
<h1 id="inventory-for-2001kev"><a name="inventory"></a>Inventory for 2001/kev</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.c">kev.c</a>
|
||||
- entry source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.alt.c">kev.alt.c</a>
|
||||
- alternative source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.orig.c">kev.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a href="2001_kev.tar.bz2">2001_kev.tar.bz2</a> - download entry
|
||||
source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.c">kev.c</a> - entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.alt.c">kev.alt.c</a> - alternative source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/kev.orig.c">kev.orig.c</a> - original source</li>
|
||||
<li><a href="2001_kev.tar.bz2">2001_kev.tar.bz2</a> - download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/.gitignore">.gitignore</a>
|
||||
- list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2001/kev/README.md">README.md</a> - markdown source for index.html</li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
Reference in new issue
Block a user