<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Games | Learn C Games Programming Blog</title>
	<atom:link href="https://learncgames.com/tag/games/feed/" rel="self" type="application/rss+xml" />
	<link>https://learncgames.com</link>
	<description>A blog about C, programming games and my ebook(s).</description>
	<lastBuildDate>Fri, 23 May 2025 09:24:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://learncgames.com/wp-content/uploads/2020/03/cropped-favicon-32x32.png</url>
	<title>Games | Learn C Games Programming Blog</title>
	<link>https://learncgames.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">181446779</site>	<item>
		<title>Why I hate Assembly language&#8230;</title>
		<link>https://learncgames.com/why-i-hate-assembly-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-i-hate-assembly-language</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Wed, 29 Jun 2022 16:05:16 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[assembly language]]></category>
		<category><![CDATA[Games]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=3060</guid>

					<description><![CDATA[<p>I spent several years in the 1980s programming games. I have a memory of 26 year old me sat hunched over a computer late at night back in 1985. I was working a 60-70 hour week as a partner in a games company. My current game was an American Civil War tactical wargame called Johnny [&#8230;]</p>
The post <a href="https://learncgames.com/why-i-hate-assembly-language/">Why I hate Assembly language…</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:52,&quot;href&quot;:&quot;http:\/\/www.6502.org\/source\/floats\/wozfp1.txt&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250822133323\/http:\/\/6502.org\/source\/floats\/wozfp1.txt&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 11:26:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 00:11:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 16:00:37&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 15:48:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-21 23:35:50&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 15:24:14&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-01 07:16:27&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-04 23:07:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-08 14:54:56&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 22:46:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-15 06:36:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-18 14:28:04&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-21 22:16:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-24 22:55:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-28 13:54:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-31 16:40:13&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-04 05:36:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-07 13:27:28&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-11 13:19:55&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-15 02:29:27&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-18 13:01:13&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-22 01:34:38&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-22 01:34:38&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:53,&quot;href&quot;:&quot;https:\/\/sites.google.com\/site\/6502asembly\/6502-instruction-set\/lda&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20221026080740\/https:\/\/sites.google.com\/site\/6502asembly\/6502-instruction-set\/lda&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 11:26:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-10 03:35:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-13 16:00:44&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-17 07:50:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-20 23:38:47&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-25 07:25:55&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-28 23:17:14&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-04 15:07:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-08 03:11:55&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-11 14:47:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-14 22:37:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-18 06:28:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-21 14:17:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-24 22:06:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-28 13:54:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-31 21:43:08&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 05:36:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 13:27:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 18:59:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-15 05:11:09&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-18 13:01:17&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-22 01:34:44&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-22 01:34:44&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:54,&quot;href&quot;:&quot;https:\/\/github.com\/wardog1uk\/mikro&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250306135453\/https:\/\/github.com\/wardog1uk\/mikro&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 11:28:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 03:35:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 16:00:33&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 07:50:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 23:38:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-24 23:26:41&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-28 15:18:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-04 07:08:06&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-07 22:57:52&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 14:47:32&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-14 22:37:34&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-18 06:28:58&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-21 14:17:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-24 22:06:01&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-28 13:54:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-31 16:40:13&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-04 05:36:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-07 13:27:28&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-11 05:21:38&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-14 13:12:39&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 21:02:07&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-21 12:56:57&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-21 12:56:57&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img fetchpriority="high" decoding="async" class="alignleft size-full wp-image-3062" src="https://learncgames.com/wp-content/uploads/2022/06/6502_assembler.png" alt="6502 assembler listing" width="573" height="506" srcset="https://learncgames.com/wp-content/uploads/2022/06/6502_assembler.png 573w, https://learncgames.com/wp-content/uploads/2022/06/6502_assembler-300x265.png 300w" sizes="(max-width: 573px) 100vw, 573px" />I spent several years in the 1980s programming games.</p>
<p>I have a memory of 26 year old me sat hunched over a computer late at night back in 1985. I was working a 60-70 hour week as a partner in a games company. My current game was an American Civil War tactical wargame called <strong>Johnny Reb II</strong>. I was struggling with some &#8216;artificial intelligence&#8217; code for the attackers (Confederate troops) to cross a bridge over a river. On the other side the defenders (Union) were trying to defend the bridge.</p>
<p><img decoding="async" class="alignleft size-full wp-image-3065" src="https://learncgames.com/wp-content/uploads/2022/06/johnnyRebII.png" alt="Johnny Reb II" width="284" height="177" /></p>
<p>Artificial Intelligence in games is a completely different thing from ML and Data Science nowadays. Back then it was just a control algorithm for troops reacting to the presence of enemy troops and working out the best routes, targets to attack, whether to retreat and so on.</p>
<p>What made it worse was that the whole thing was written in 6502 assembly language (and later converted to Z80). Back then you had two choices: Basic which was to be honest slow and clunky for writing games or assembly language. If I was doing it now, without a moments hesitation I&#8217;d program it in C. But C compilers for 6502 didn&#8217;t exist back then.</p>
<h3>The Problem with assembly language</h3>
<p>The problem with assembly language is<strong> (a) it&#8217;s slow to write.</strong> You can write 10 lines of C in the same time as ten lines of assembly code. Those ten lines of C will do far more than ten lines of assembly code. In 6502 all you are doing is moving values between registers or register &lt;&gt; memory. Maybe add a number or increment one of the three available registers A, X or Y. These were all 8-bit registers so you couldn&#8217;t even index easily through 64-bit memory. To do 16-bit indexing you stored the 16-bit address in two successive page-0 locations (addresses 0-255) and then used Y as an 8-bit index. You could do the same in page 0- memory with the X register.</p>
<p><strong>(b). It takes a lot of code to do anything in assembly language</strong>. You want floating point arithmetic in 6502? <a title="Link to Steve Wozniak source code for 6502 floating point routines" href="http://www.6502.org/source/floats/wozfp1.txt" target="_blank" rel="noopener">Take a look</a>.  I think Steve Wozniak wrote those for the Apple I/II. What we take for granted in languages like C# or Java or JavaScript is code for high level data structures like dictionaries. I&#8217;m sure it could be done but it takes a fair bit of programming. You don&#8217;t have those in assembly language; all you have to use is simple and not very long arrays.</p>
<p><em> In C# I wrote a program to read a 46 MB text file and produce a sorted count of all words in the file.  It used a Dictionary, took me 30 minutes to write and it ran in 5 seconds.  It would take weeks to do the same in assembler. </em></p>
<p>6502 Page 0 locations were valuable because they made your code both shorter and faster.</p>
<p>I wrote a cross-assembler for 6502 in Z80 as a way to learn Z80. Assemblers use labels (<em>L20, L30, L31 etc. in the screenshot</em>) and I needed a way to hold them efficiently in memory. I ended up with a 26 x 26 index table of 2 byte pointers. If you had a label &#8216;ROUTE&#8217; then there would be a pointer to a chain at the location for [&#8216;R&#8217;][&#8216;O&#8217;]. Each entry in the chain was like this</p>
<ul>
<li>1 byte length of rest of label (i.e. 3 for &#8216;UTE&#8217;) &#8211; 0 marks the end of the chain.</li>
<li>3 bytes to hold &#8216;UTE&#8217;.</li>
<li>2 byte address value</li>
</ul>
<p>No need to hold the whole word as you know the first two letters. It also makes comparing a label against one in the table was faster because it only needed to match against <em>len(label)-2</em> characters.</p>
<p>So the next value in the chain would start after that or be a 0 for the end of the chain. Yes most of the index table might be empty (all 26x26x2= 1352 bytes) but every label in a chain used 2 bytes less than the full label text. So with more than 676 labels you saved memory. Searching for a label was just a matter of walking a chain. Labels were just addresses; so a location could hold a value like a count. You&#8217;d identify it with a label and use that label in 6502 instructions. No variables in assembler; it&#8217;s all addresses&#8230;</p>
<p>With 6502 you need to do two passes to generate code. If you have a label in the first page of memory (0-255) then instructions are only two bytes long and are faster to execute than the three byte instructions. So on the first pass you don&#8217;t know if a <a title="Link to 6502 LDA instruction" href="https://sites.google.com/site/6502asembly/6502-instruction-set/lda" target="_blank" rel="noopener">LDA label</a> will be 2 or 3 bytes long. After the first pass through though you do know now, so on the 2nd pass it can output the correct size instructions.</p>
<p>Programming in assembler means you have to write a lot of code and in the early days before I had a development machine that meant I had to save the source code to tape and compile it using a cartridge assembler. The CBM-64 could take cartridges and one of them stored assembly language in RAM just like Basic. If the game did something wrong then the CBM-64 would reset and you&#8217;d lose your source and have to reload it from the slow tape. Let&#8217;s hope you didn&#8217;t forget to save changes before you ran it. I spent a few hours gnashing my teeth over a persistent crash. I was calling a CLR routine when it should have been CLS! d&#8217;oh&#8230;</p>
<p>Note, from memory it was <a href="https://github.com/wardog1uk/mikro" target="_blank" rel="noopener">the Mikro cartridge assembler</a>. See screenshot below.</p>
<figure id="attachment_3063" aria-describedby="caption-attachment-3063" style="width: 384px" class="wp-caption alignleft"><img decoding="async" class="size-full wp-image-3063" src="https://learncgames.com/wp-content/uploads/2022/06/mikro-assemblert.png" alt="Miro assembler start up screen. " width="384" height="272" srcset="https://learncgames.com/wp-content/uploads/2022/06/mikro-assemblert.png 384w, https://learncgames.com/wp-content/uploads/2022/06/mikro-assemblert-300x213.png 300w" sizes="(max-width: 384px) 100vw, 384px" /><figcaption id="caption-attachment-3063" class="wp-caption-text">Mikro Assembler Startup From <a href="https://github.com/wardog1uk/mikro" target="_blank" rel="noopener">Github</a></figcaption></figure>
<h3>Jump Tables</h3>
<p>So a game back then might be 5,000 lines of code or longer. That&#8217;s quite a bit to hold in memory, given that you need space for the game machine code, sprites, graphics etc. as well. Plus it&#8217;s wasteful having to recompile the same code over and over again. My cross-assembler did 250 lines per second but divide that by two for the two passes.</p>
<p>So I split up long files into smaller ones and created a jump table at the start. There was no linker so the code was loaded into RAM at fixed addresses. If you had five subroutines in one file then there&#8217;d be five jumps at the start to the actual function. And the files that called those functions just had a block of five calls at the start.</p>
<p>That way you didn&#8217;t have to worry exactly where the function was located in RAM so long as that file was always loaded at the same address.</p>
<p>&nbsp;</p>
<h3>Switching to Development Machines</h3>
<p>It got easier when we switched to development machines. The CBM-64 had a parallel port as did the development machine (<em>Tatung Einstein-a CP/M computer</em>) so a little bit of handler code in the CBM-64 set up the CIA chip to wait for data sent down the parallel cable and put the code directly in RAM. It took no time to load the handler from tape after a crash and then send down the whole file.</p>
<p>Modern CPUs do all sort of optimizing tricks and that&#8217;s even before you use vectorization. Compiler writers know how to generate code that uses these tricks but it would take quite a while to learn them so you could use them in hand-written assembly.</p>
<h2>Conclusion</h2>
<p>Writing in assembler in the 80s was easy to learn. Nowadays I wouldn&#8217;t know where to start- the Intel and AMD CPUs have a lot of different chips in their families so there are variations in what instructions are available. Oh and don&#8217;t forget there&#8217;s ARM CPUs as well.</p>
<p>Writing in C (or even C++) is a lot easier to get into and I very much doubt if you&#8217;d get any better performance in writing things in assembly. Also, it would take a lot longer.</p>The post <a href="https://learncgames.com/why-i-hate-assembly-language/">Why I hate Assembly language…</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3060</post-id>	</item>
		<item>
		<title>A newish game platform</title>
		<link>https://learncgames.com/a-newish-game-platform/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-newish-game-platform</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 24 Jan 2021 00:00:30 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Blazor]]></category>
		<category><![CDATA[Games]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2484</guid>

					<description><![CDATA[<p>Web games have been largely Flash in the past though that took a nosedive in the &#8216;tens (2010 onwards) and Flash is officially no more as of 2021. The spirit lives on in JavaScript games and there are innumerable games in JavaScript. That said, I&#8217;ve never been that keen on JavaScript. I talked about Web [&#8230;]</p>
The post <a href="https://learncgames.com/a-newish-game-platform/">A newish game platform</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:232,&quot;href&quot;:&quot;https:\/\/awesomeopensource.com\/project\/AdrienTorris\/awesome-blazor&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250613201344\/https:\/\/awesomeopensource.com\/project\/AdrienTorris\/awesome-blazor&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:01:48&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-11 04:54:05&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-23 17:07:41&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-27 12:36:49&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-03 06:13:31&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-11 02:32:12&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-26 18:32:14&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-05 09:19:01&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-14 19:13:11&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-14 19:13:11&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:233,&quot;href&quot;:&quot;https:\/\/wengier.com\/trains2\/play.html&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20210917120832\/https:\/\/wengier.com\/trains2\/play.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:01:51&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-11 04:54:05&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-23 17:07:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-03 06:13:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 02:32:12&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 18:32:14&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-05 09:19:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-14 19:13:11&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-14 19:13:11&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2485" src="https://learncgames.com/wp-content/uploads/2021/01/Blazor_dungeon-300x183.png" alt="Blazor Dungoon" width="300" height="183" srcset="https://learncgames.com/wp-content/uploads/2021/01/Blazor_dungeon-300x183.png 300w, https://learncgames.com/wp-content/uploads/2021/01/Blazor_dungeon-768x469.png 768w, https://learncgames.com/wp-content/uploads/2021/01/Blazor_dungeon.png 837w" sizes="auto, (max-width: 300px) 100vw, 300px" />Web games have been largely Flash in the past though that took a nosedive in the &#8216;tens (<em>2010 onwards</em>) and Flash is officially no more as of 2021. The spirit lives on in JavaScript games and there are innumerable games in JavaScript. That said, I&#8217;ve never been that keen on JavaScript. I talked about Web games in a <a title="Link to post on Web games" href="https://learncgames.com/i-like-web-games/" target="_blank" rel="nofollow noopener">post back in December</a> and particularly that I saw Blazor as a possible game platform.</p>
<p>Today though I discovered <a title="Link to awesome Blazor on GitHub" href="https://awesomeopensource.com/project/AdrienTorris/awesome-blazor" target="_blank" rel="nofollow noopener">Awesome Blazor</a> on GitHub and it includes 18 Blazor web games including a multiplayer dungeon which is shown (I think it looks like a bit Pacmanish personally) . Most of these are ASP .NET Core 3.1 (<em>which became .NET 5 late last year</em>).</p>
<p>Some games will use wasm (<em>Web Assembly</em>) while other use C# in a terminal. As a simple proof of concept but nicely done, have a look at the <a title="Link to online train set" href="https://wengier.com/trains2/play.html" target="_blank" rel="nofollow noopener">virtual train set</a> online.  You can lay track and then run one or more trains along it. Impressive as a demonstration of what you can do with C# and Blazor in a browser.</p>The post <a href="https://learncgames.com/a-newish-game-platform/">A newish game platform</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2484</post-id>	</item>
		<item>
		<title>Creative computing games</title>
		<link>https://learncgames.com/creative-computing-games/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creative-computing-games</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Wed, 17 Jun 2020 23:00:45 +0000</pubDate>
				<category><![CDATA[Other stuff]]></category>
		<category><![CDATA[BASIC]]></category>
		<category><![CDATA[Games]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=827</guid>

					<description><![CDATA[<p>Yesterday&#8217;s post reminded me of one of the joys of my youth. The Creative Computing magazines&#8217; &#8220;BASIC Computer games&#8221; book and it&#8217;s sequel &#8220;More BASIC Computer games.&#8221; . I bought these in 1982, and they weren&#8217;t cheap then- about £20 each. Of course over the years they got lost but I bought them again a [&#8230;]</p>
The post <a href="https://learncgames.com/creative-computing-games/">Creative computing games</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:659,&quot;href&quot;:&quot;http:\/\/www.moorecad.com\/classicbasic\/index.html&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20211225072523\/http:\/\/www.moorecad.com\/classicbasic\/index.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:22:50&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-02-16 03:28:02&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-02-20 17:42:10&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-02-27 12:36:49&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-07 01:14:10&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-12 09:46:52&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-24 13:41:45&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-04 21:26:13&quot;,&quot;http_code&quot;:404}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-04 21:26:13&quot;,&quot;http_code&quot;:404},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:660,&quot;href&quot;:&quot;http:\/\/www.vintage-basic.net\/games.html&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251222202116\/http:\/\/www.vintage-basic.net\/games.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 17:22:52&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-16 03:28:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 17:42:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-24 11:07:50&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-27 12:36:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-07 01:14:08&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-12 09:46:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-24 13:41:43&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-04 21:26:15&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-04 21:26:15&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-828" src="https://learncgames.com/wp-content/uploads/2020/06/hamurabi-basic-listing-300x237.png" alt="Hammurabi BASIC list" width="300" height="237" srcset="https://learncgames.com/wp-content/uploads/2020/06/hamurabi-basic-listing-300x237.png 300w, https://learncgames.com/wp-content/uploads/2020/06/hamurabi-basic-listing.png 423w" sizes="auto, (max-width: 300px) 100vw, 300px" />Yesterday&#8217;s post reminded me of one of the joys of my youth. The Creative Computing magazines&#8217; &#8220;BASIC Computer games&#8221; book and it&#8217;s sequel &#8220;More BASIC Computer games.&#8221; . I bought these in 1982, and they weren&#8217;t cheap then- about £20 each.</p>
<p>Of course over the years they got lost but I bought them again a few years back. Some of the games in here are classics- A simple Star Trek game, Hammurabi, mugwump, golf, various landers. Of course they are all in BASIC but relatively easy to convert to C.</p>
<p>You don&#8217;t have to buy the books (<em>they are pretty expensive on Amazon and no I&#8217;m not selling mine!</em>) as many of the games are available online. One source is this <a title="Link to classic BASIC Games page" href="http://www.moorecad.com/classicbasic/index.html" target="_blank" rel="noopener noreferrer">classic BASIC games</a> web page. Here&#8217;s <a title="Link toi Vintage BASIC" href="http://www.vintage-basic.net/games.html" target="_blank" rel="noopener noreferrer">another link  </a>with more games but they are scans of the pages.</p>
<p>I promise I won&#8217;t be putting any more BASIC listings up. These are just an  inspiration to create small games in C or adapt these.</p>
<p>While at Uni in my first year, I adapted a copy of the Star Trek game adding in a whole lot of new features. It doesn&#8217;t say much about the interactive mainframe there that with just four people playing the game, the mainframe was brought to its knees!</p>The post <a href="https://learncgames.com/creative-computing-games/">Creative computing games</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">827</post-id>	</item>
		<item>
		<title>Slight change in direction &#8211; more C++ and Pi</title>
		<link>https://learncgames.com/slight-change-in-direction-more-c-and-pi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=slight-change-in-direction-more-c-and-pi</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sun, 26 Apr 2020 23:00:10 +0000</pubDate>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[raspberry-pi]]></category>
		<category><![CDATA[This website]]></category>
		<category><![CDATA[direction]]></category>
		<category><![CDATA[Games]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=468</guid>

					<description><![CDATA[<p>As I said recently, writing about C and games probably isn&#8217;t enough to sustain this site, but if I extend it to include C++ and Raspberry Pi and still maintain the overall direction of writing about game development then that I think will do it. So I&#8217;ve added a new page for C++. I&#8217;m currently [&#8230;]</p>
The post <a href="https://learncgames.com/slight-change-in-direction-more-c-and-pi/">Slight change in direction – more C++ and Pi</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:764,&quot;href&quot;:&quot;https:\/\/pixabay.com\/users\/planet_fox-4691618\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4980917&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250512071052\/https:\/\/pixabay.com\/users\/planet_fox-4691618\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 18:17:51&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 03:12:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-16 09:25:57&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-20 00:14:18&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-25 14:01:41&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 12:21:08&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 23:20:21&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-09 02:16:37&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-13 10:15:25&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-18 18:12:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-26 08:44:43&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-31 00:29:27&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 01:33:17&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-08 20:49:17&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-12 18:16:59&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 18:53:27&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 18:53:27&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:765,&quot;href&quot;:&quot;https:\/\/pixabay.com\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4980917&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205102120\/https:\/\/pixabay.com\/?utm_source=link-attribution&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 18:17:52&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 03:12:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-16 09:25:59&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-20 00:14:18&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-25 14:01:40&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 12:21:05&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 23:20:21&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-09 02:16:40&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-13 10:15:25&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-18 18:12:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-26 08:44:46&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-31 17:25:02&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 01:33:18&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-08 20:49:17&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-12 18:17:01&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-17 18:53:27&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 18:53:27&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:766,&quot;href&quot;:&quot;https:\/\/github.com\/isocpp\/CppCoreGuidelines\/blob\/master\/CppCoreGuidelines.md&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260129112322\/https:\/\/github.com\/isocpp\/CppCoreGuidelines\/blob\/master\/CppCoreGuidelines.md&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 18:17:56&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 03:12:16&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-02-16 09:26:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 00:14:18&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-02-25 14:01:41&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-03-01 12:21:08&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-05 23:20:23&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-09 02:16:38&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-13 10:15:28&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-18 18:12:12&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-31 00:29:34&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-04-04 01:33:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-08 04:24:28&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-04-11 06:22:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-15 02:29:26&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-04-20 09:14:37&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 09:14:37&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:767,&quot;href&quot;:&quot;https:\/\/www.techrepublic.com\/article\/raspberry-pi-why-sales-have-rocketed-in-the-middle-of-the-coronavirus-outbreak&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251230005019\/https:\/\/www.techrepublic.com\/article\/raspberry-pi-why-sales-have-rocketed-in-the-middle-of-the-coronavirus-outbreak\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 18:17:59&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-10 03:12:16&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-16 09:26:01&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-20 00:14:18&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-02-25 14:01:41&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-01 12:21:05&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-05 23:20:21&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-09 02:16:37&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-13 10:15:26&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-18 18:12:11&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-03-31 17:25:03&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-04 01:33:17&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-08 04:24:25&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-11 06:22:43&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-15 02:29:26&quot;,&quot;http_code&quot;:403},{&quot;date&quot;:&quot;2026-04-20 09:14:33&quot;,&quot;http_code&quot;:403}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-20 09:14:33&quot;,&quot;http_code&quot;:403},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_470" aria-describedby="caption-attachment-470" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-470" src="https://learncgames.com/wp-content/uploads/2020/04/raspberry-pi-4980917_640-300x200.jpg" alt="Raspberry Pi" width="300" height="200" srcset="https://learncgames.com/wp-content/uploads/2020/04/raspberry-pi-4980917_640-300x200.jpg 300w, https://learncgames.com/wp-content/uploads/2020/04/raspberry-pi-4980917_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-470" class="wp-caption-text">Image by <a href="https://pixabay.com/users/planet_fox-4691618/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4980917">planet_fox</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=4980917">Pixabay</a></figcaption></figure>
<p>As I said recently, writing about C and games probably isn&#8217;t enough to sustain this site, but if I extend it to include C++ and Raspberry Pi and still maintain the overall direction of writing about game development then that I think will do it.</p>
<p>So I&#8217;ve added a new page for C++. I&#8217;m currently working on the C++ version of Asteroids and making good progress.</p>
<p>I&#8217;m striving to write it in modern C++. To that end, the first entry in the C++ page is a link to a very long document: <a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md" target="_blank" rel="noopener noreferrer">C++ Core Guidelines </a>written by two luminaries of the C++ world Herb Sutter and Bjarne Stroustrup (creator of C++). You should definitely give it a read.</p>
<p><strong>Interesting fact about the Raspberry PI</strong>. Did you know that in March 2020, <a href="https://www.techrepublic.com/article/raspberry-pi-why-sales-have-rocketed-in-the-middle-of-the-coronavirus-outbreak/" target="_blank" rel="noopener noreferrer">they sold 640,000!</a> That&#8217;s pretty amazing! And while that article says that AAA game playing isn&#8217;t something you can do on a Pi, we now know that you can run simple 2D arcade quality games on a Raspberry Pi 4.</p>The post <a href="https://learncgames.com/slight-change-in-direction-more-c-and-pi/">Slight change in direction – more C++ and Pi</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">468</post-id>	</item>
		<item>
		<title>Learn C Games</title>
		<link>https://learncgames.com/about-this-site/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=about-this-site</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sat, 29 Feb 2020 09:26:33 +0000</pubDate>
				<category><![CDATA[Ebook]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry-pi]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1</guid>

					<description><![CDATA[<p>This blog is about C and Games programming (in C mainly). There are now two ebooks written by David Bolton, author of the Learn C Games Programming for beginners EBook. This is the Windows version, with a Raspberry Pi/Linux one now out.   The first 20 chapters introduce and teach C programming with many examples. This [&#8230;]</p>
The post <a href="https://learncgames.com/about-this-site/">Learn C Games</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.amazon.co.uk/Learn-C-Games-Programming-Beginners-ebook/dp/B07MZG5H29"><img loading="lazy" decoding="async" class="size-medium wp-image-12 alignleft" src="https://learncgames.com/wp-content/uploads/2020/02/learn-c-bookcover-193x300.jpg" alt="Learn C Games Programming Book cover" width="193" height="300" srcset="https://learncgames.com/wp-content/uploads/2020/02/learn-c-bookcover-193x300.jpg 193w, https://learncgames.com/wp-content/uploads/2020/02/learn-c-bookcover.jpg 450w" sizes="auto, (max-width: 193px) 100vw, 193px" /></a>This blog is about C and Games programming (in C mainly). There are now two ebooks written by <a href="https://dhbolton.com" target="_blank" rel="noopener noreferrer">David Bolton</a>, author of the <a href="https://www.dhbolton.com/learn-c-games-programming-beginners.html">Learn C Games Programming for beginners EBook</a>. This is the Windows version, with a Raspberry Pi/Linux one now out.  </p>
<p>The first 20 chapters introduce and teach C programming with many examples. <a href="https://www.dropbox.com/s/kl3rb85g8yq59iu/asteroids.mp4?dl=0">This link</a> is to an .mp4 of the asteroids game from the book. It&#8217;s about 90 seconds long and demonstrates all of the features of the game. High score table, rotating asteroids (four sizes), sound, explosions, ship hyper-jump and shields.</p>
<p>The remaining 30 chapters (20 in the Linux/Raspberry PI) builds up to full source code, about 2,000 lines, in 13 stages and I explain how each feature works and is implemented.  All of the book&#8217;s source code is on <a href="https://github.com/David-H-Bolton/LearnC" target="_blank" rel="noopener noreferrer">Github</a>. (Windows) or (<a title="Link to Learn C on Linux on GitHub" href="https://github.com/David-H-Bolton/LearnCOnLinux" target="_blank" rel="noopener">Linux</a>). <a href="https://learncgames.com/more-about-me/" target="_blank" rel="noopener noreferrer">More about me</a>. Buy the Windows one on <a title="Buy this book on Amazon UK" href="https://www.amazon.co.uk/Learn-C-Games-Programming-Beginners-ebook/dp/B07MZG5H29" target="_blank" rel="noopener noreferrer">Amazon(UK)</a>, <a title="Buy this book on Amazon USA" href="https://www.amazon.com/Learn-C-Games-Programming-Beginners-ebook/dp/B07MZG5H29" target="_blank" rel="noopener noreferrer">Amazon(US) </a>or the <a title="Link to ebook on Amazon UK,." href="https://amzn.eu/d/87tHW3A" target="_blank" rel="noopener">Linux/Raspberry PI</a>. (UK). You can buy the book in other regions by changing the region in Amazon to your local one. </p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/about-this-site/">Learn C Games</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		<enclosure url="https://www.dropbox.com/s/kl3rb85g8yq59iu/asteroids.mp4?dl=0" length="0" type="video/mp4" />

		<post-id xmlns="com-wordpress:feed-additions:1">1</post-id>	</item>
	</channel>
</rss>
