tag:blogger.com,1999:blog-3211670729239623372024-03-14T04:01:27.949-07:00Bitwise Magazineserious computing...Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comBlogger142125tag:blogger.com,1999:blog-321167072923962337.post-2938133469746932732021-07-26T02:13:00.005-07:002021-07-26T02:18:46.932-07:00 Why Do People Program In C?<p>Given the fact that C is such an old language (dating from the early 1970s) and lacks many of the features of more modern language (such as object orientation, garbage collection ¬ and even a string data type!) why is it still so widely used? In fact, C continues to be one of the most important languages for professional development.</p><p>I’ve written an article on the Udemy blog to try to explain what C is and why it is so important: “What is C Programming?” which explains a few important details about the c programming language.</p><p><a href="https://blog.udemy.com/what-is-c-programming/">https://blog.udemy.com/what-is-c-programming/</a></p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-37819037278457744622021-05-31T03:03:00.005-07:002021-05-31T03:03:31.889-07:00Program a C# Text Adventure with Free Source Code<p>I’ve just published a major update to my adventure game system for C# programmers. To get the code, sign up to my newsletter and I’ll send you the download link: <a href="http://www.bitwisebooks.com">http://www.bitwisebooks.com</a></p><p>The new BIFF C# (‘<i>Bitwise Interactive Fiction Framework</i>’) adventure game system now has the same feature-set as my Java framework (also available for free download). These frameworks are developed from the codebase created for my two books on text adventure programming, ‘<i>The Little Book Of Adventure Game Programming in C# (and other languages)</i>’ and ‘<i>The Little Java Book of Adventure Game Programming</i>’. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXAETWXdioNBZ1Ai0-BXAkirpoYeS8WPhnnQv9-DrIRRkJUQmjQViZCCrHDHm5kroWKvUPWdc6aMP8vp_DO-YEu7sHwGhDIqFa2_jGi-Juoxh9tSCKbTlWW7zlk3iqtjaIotW7mE1cbwE/s1339/CSharpBIFF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="752" data-original-width="1339" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXAETWXdioNBZ1Ai0-BXAkirpoYeS8WPhnnQv9-DrIRRkJUQmjQViZCCrHDHm5kroWKvUPWdc6aMP8vp_DO-YEu7sHwGhDIqFa2_jGi-Juoxh9tSCKbTlWW7zlk3iqtjaIotW7mE1cbwE/w640-h360/CSharpBIFF.png" width="640" /></a></div><p>New features in the C# version of BIFF include:</p><h3 style="text-align: left;">Adjective matching</h3><p>Parsed adjectives are compared with an optional list of adjectives stored in Thing objects so there might be three small rings, say, brass, gold and silver. If the player enters "take small ring" the game will ask whether the "small gold ring", the "small brass ring" or the "small silver ring" is intended. </p><h3 style="text-align: left;">Mass is associated with each object. </h3><p>Here mass can be thought of as the combination of size and weight so that the player can only carry items up to a certain total mass. The mass of items is calculated recursively when things are in other things (so player can't ‘cheat’ by placing high-mass items into a low-mass container and then carrying the container). </p><h3 style="text-align: left;">The Thing hierarchy is extended </h3><p>Descendants include generic things (non-interactive scenery such as trees, walls, dust etc.) and lockable things. A lockable thing can be opened using a designated object (e.g. a specific key object). </p><h3 style="text-align: left;">Other changes include:</h3><p>Objects now have a Container property which stores a reference either to Room or to the container (such as a sack or chest) in which they are contained. Both the map and the list of treasures in the game are implemented as dictionaries. Special actions are now easier to implement (say, to take certain actions when the gold coin is put into the slot but not when the silver coin is put into the slot). You will find more documentation in the file NOTES.txt supplied with the code.</p><p>BIFF includes a simple sample game to get you started. The essentials of adventure game programming are explained in my two books on the subject:</p><p><b>The Little Book of Adventure Game Programming in C#</b></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgva7roaavYO9vDCdqT32yF89b9XBgi7JfYvybKa-LQ42mxeqtYCaJNQgkFEbt2rDK4RL1da27smXfgZijGCiX6vBPlokcEYqCleKsGwtq3AbBFJTaHK8B5_sz_j0DXhLjgQRk7HM_2zOE/s489/Adventure_mini.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="489" data-original-width="400" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgva7roaavYO9vDCdqT32yF89b9XBgi7JfYvybKa-LQ42mxeqtYCaJNQgkFEbt2rDK4RL1da27smXfgZijGCiX6vBPlokcEYqCleKsGwtq3AbBFJTaHK8B5_sz_j0DXhLjgQRk7HM_2zOE/w328-h400/Adventure_mini.png" width="328" /></a></div><p> Amazon (US) <a href="https://amzn.to/33M6sQ4">https://amzn.to/33M6sQ4</a> </p><p> Amazon (UK) <a href="https://amzn.to/2YtaBrj">https://amzn.to/2YtaBrj</a> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDDQLNHYYM8gZ7hFsnl2ceyuseSwVyPIagPL5jAYttWiOReCN10SMZRUbKMK9KsFsITVNa9jixxNU4OiEpFzKXBqaGVX7GMQUcdvpyiidTq-_LrxM8r38LoCN-i5HIq82J-GMAqPzIoSI/s489/JavaAdventure_Mini.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="489" data-original-width="400" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDDQLNHYYM8gZ7hFsnl2ceyuseSwVyPIagPL5jAYttWiOReCN10SMZRUbKMK9KsFsITVNa9jixxNU4OiEpFzKXBqaGVX7GMQUcdvpyiidTq-_LrxM8r38LoCN-i5HIq82J-GMAqPzIoSI/w328-h400/JavaAdventure_Mini.png" width="328" /></a></div><p><b> The Little Java Book of Adventure Game Programming</b></p><p> Amazon (US) <a href="https://amzn.to/3gizI93">https://amzn.to/3gizI93</a> </p><p> Amazon (UK) <a href="https://amzn.to/3mydF0e">https://amzn.to/3mydF0e</a> </p><p>Have fun!</p><div><br /></div>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-11225815531858378272021-05-28T05:46:00.002-07:002021-05-28T05:46:16.297-07:00 Camtasia 2021 Review<h2 style="text-align: left;">Camtasia 2021 (Windows/Mac) £216</h2><p>TechSmith <a href="https://www.techsmith.com/video-editor.html">https://www.techsmith.com/video-editor.html</a></p><p>There are now so many different software packages for recording and editing screencasts (videos of activity on a computer screen) that I often wonder why I still use Camtasia? The answer, I think, is that it does the job it is designed to do – and no more. There are plenty of general-purpose video editors which provide basic screencasting as a small part of a huge feature-set for editing camera-recorded video. But Camtasia sticks to its original brief: while it can record webcam video, it remains fully focussed on screencasting. </p><p>In recent years, TechSmith has released a new version of Camtasia once a year. The last few releases have each offered a range new and improved features but there have been no really gigantic changes. The same is true of the latest version. The new things in Camtasia 2021 are mainly expansions of, or improvements to, its existing feature set. That means that if you have used Camtasia before you will be able to get started with the new release with almost no learning curve. </p><p>So, what are the new features?</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxHof-mwGTBDmcP3JE40QFF-oMQWCxf03qoSxoefrEgb-MuxJckIXUr8corNfy53LBxPue18isO0SLvQVc94EOUTfDitAFHwBCmmDGbR4AiFwBEJLIRZZPlyBfLi5ob5a1d0N2jnrdfgc/s1395/transition.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="993" data-original-width="1395" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxHof-mwGTBDmcP3JE40QFF-oMQWCxf03qoSxoefrEgb-MuxJckIXUr8corNfy53LBxPue18isO0SLvQVc94EOUTfDitAFHwBCmmDGbR4AiFwBEJLIRZZPlyBfLi5ob5a1d0N2jnrdfgc/w640-h456/transition.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Here the new 'exploding hexagon' transition merges two adjacent clips using an animation</td></tr></tbody></table><p>Running the Windows version of the software, the first thing I noticed was the hugely expanded range of transitions. A transition is an effect that can be used to join together two video clips. In previous releases of Camtasia, the transitions were limited to fairly simple effects such as fades, slides and animated page-folds. In Camtasia 2021 there are over 75 transitions including bubbles, diamonds, waves, arcs and imploding hexagons. To use a transmission you select it in a side panel and then drop it onto the ‘join’ between two adjacent clips. When the video runs, the animation causes one clip to blend into the other using the selected animation.</p><p>A few visual effects have been added too. You can add motion blur to make fast action animations (text animations of headlines, for example) look more effective and you can round the corners of either the main recording or of a foreground element such as a video-clip superimposed over a screencast. You can also add background tints to clips to change the colour tone and you can add matte effects to (for example) create a silhouette or cut-out of a foreground element such as text or video. You could, for example, add a matte to a headline so that the background videos shows through the characters.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5t8KE8GywpUMabJBdVhCP2l8VEIPwbLceD_Pe3Z5GCr1MCpIzigv3IyhErOfAcMVetB0cnBYi779mBh7xzgD39_xcg-ROsy82a6LAHy26soouPRWCyt3Chs1S-QJjEfdTN5uxM6I1H8w/s1395/matte.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="993" data-original-width="1395" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5t8KE8GywpUMabJBdVhCP2l8VEIPwbLceD_Pe3Z5GCr1MCpIzigv3IyhErOfAcMVetB0cnBYi779mBh7xzgD39_xcg-ROsy82a6LAHy26soouPRWCyt3Chs1S-QJjEfdTN5uxM6I1H8w/w640-h456/matte.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A matte has been applied to the text so that the animated background 'shows through' the letters</td></tr></tbody></table><p>One new feature that I was looking forward to using was the Colour LUT (Lookup Table) capability. This lets you apply tonal effects to video clips to enhance the ‘warmness’ or apply subtle global lighting effects. You can see an example of this in the Camtasia demo video below. Sadly, when I looked for the LUT filters I couldn’t find them. On checking with TechSmith I discovered that Colour LUT is only provided in the Mac release of Camtasia, not in the Windows version that I’ve been using. I was assured, however, that it is coming to the Windows product and will be supplied in a forthcoming maintenance release.</p><p>Other new features in Camtasia include simplified creation of ‘assets’ such as titles and animations which can be stored for re-use in the Library panel; an ‘emphasize’ audio effect to make it easier to fade background music beneath a foreground narration; plus, various usability improvements have been made to help you work more easily with groups of clips and with multi-file projects. Once again, the demo video below provides more information.</p><p style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/wNFqN9ZVMKs" title="YouTube video player" width="560"></iframe></p><p>In summary, as in the last few releases of Camtasia, the updates to this new version are mainly improvements to existing features or additions to the range of those features (particularly the hugely expanded number of transitions). The look, feel and core functionality of Camtasia are relatively little changed. This has the benefit that it will be immediately familiar to existing users while its straightforward user interface makes it simple for new users to learn too. Camtasia is still my screencast software of choice. However, as it increasingly faces competition from general-purpose video editing packages which often provide some screen-recording tools, at some time Camtasia will need to come up with a few more “must have” features if it is to distinguish itself from the competition. The addition of Colour LUT in the Mac Camtasia is certainly taking it in the right direction and I look forward to seeing that, as promised, in a forthcoming maintenance release for Windows.</p><p>For more on previous releases, refer to my reviews of <a href="http://www.bitwisemag.com/2020/06/camtasia-2020-review-249.html">Camtasia 2020</a> and <a href="http://www.bitwisemag.com/2019/09/camtasia-2019-review.html">Camtasia 2019</a>.</p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-72001465728796532132021-04-03T03:18:00.001-07:002021-04-03T03:18:12.998-07:00The Little Book of Java Programming<p>As I write this, the sun is shining, the birds are tweeting
and I can see primroses in the grass outside my window. Here in Britain, spring
has finally arrived! And when spring arrives, I always feel it really is time
to start work on something new. I have a few new projects lined up, some of which
I’ll tell you about later in the year. But I’ve also just finished a book. My
latest release is called <b>The Little Book Of Java</b> and it should be the perfect
thing (I hope!) for anyone who wants to learn to program in Java quickly and
easily.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcRGsmUjwgz7I5UuriaWBjtb6yAS0Mfirvhlat3Tm2CBXCjPz_G7UmFVsNidqBs0nDxv71WccM7Y8UkUMp53AyLTqtHPq6w-v2ctgbEUALz42x2V9v90jgQeUnVb_NRJ0M19uim_l7B1w/s900/Java_Medium.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="736" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcRGsmUjwgz7I5UuriaWBjtb6yAS0Mfirvhlat3Tm2CBXCjPz_G7UmFVsNidqBs0nDxv71WccM7Y8UkUMp53AyLTqtHPq6w-v2ctgbEUALz42x2V9v90jgQeUnVb_NRJ0M19uim_l7B1w/w327-h400/Java_Medium.png" width="327" /></a></div><p>As always, I’ve tried to get right to the heart of the topic
without bombarding the reader with lots of information (class libraries, method
listings and so on) that you can easily find online.</p><p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><b>The Little Book Of Java</b> explains Object Orientation,
classes, methods, generic lists and dictionaries, file operations,
serialization and exception-handling, creating commandline and 'visual'
form-based applications. You can download the source code ready to run at the
commandline or load into an IDE (the free NetBeans IDE is recommended). <o:p></o:p></p>
<p class="MsoNormal">Topics covered include...<o:p></o:p></p>
<p class="MsoNormal"></p><ul style="text-align: left;"><li>Fundamentals of Java</li><li>Object Orientation</li><li>Classes and Class Hierarchies</li><li>Variables, Types, Constants</li><li>Operators & Tests</li><li>Methods & Arguments</li><li>Constructors</li><li>Access Modifiers</li><li>Arrays & Strings</li><li>Loops & Conditions</li><li>Files & Directories</li><li>structs & enums</li><li>Overloaded and overridden methods</li><li>Exception-handling</li><li>Lists & Generics</li><li>Streams & Serialization</li><li>...and much more</li></ul><o:p></o:p><p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">You can buy <b>The Little Book Of Java</b> in paperback or for
Kindle from:<o:p></o:p></p>
<p class="MsoNormal"><span style="mso-spacerun: yes;"> </span>Amazon (US): <a href="https://www.amazon.com/dp/1913132145">https://www.amazon.com/dp/1913132145</a><o:p></o:p></p>
<p class="MsoNormal">Amazon (UK): <a href="https://www.amazon.co.uk/dp/1913132145">https://www.amazon.co.uk/dp/1913132145</a><o:p></o:p></p>
<p class="MsoNormal">And also from other Amazon stores worldwide.<o:p></o:p></p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-55003560666478391782021-02-16T04:44:00.006-08:002021-02-16T04:44:59.177-08:00FREE Collapsible Outliner with Delphi Source Code<p>I've just uploaded the code of a fully-featured collapsible
outliner which I originally developed for my own use but I’ve now decided to
make publicly available. This lets you create lists or ‘trees’ of all kinds
of structure information: contacts lists, TODO lists, project plans, plot
outlines (for writers), a CD or MP3 database – whatever takes your fancy.</p>
<p>The project contains many thousands of lines of Object
Pascal code for Delphi. To download the zip file, <a href="http://www.bitwisebooks.com" target="_blank">sign up to my mailing list</a>
and I’ll send you a link. In the meantime, here’s a short video overview:</p>
<div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/chs71ewpLDk" width="560"></iframe></div><p>If you need a quick way to learn Delphi, you can get a copy
of my book, <b>The Little Book Of Delphi</b>, on Amazon:</p>
<p>Amazon US: <a href="https://amzn.to/37ZJqHF">https://amzn.to/37ZJqHF</a></p>
<p>Amazon UK: <a href="https://amzn.to/392AJxm">https://amzn.to/392AJxm</a></p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-49285896535582300332020-12-07T03:33:00.002-08:002020-12-07T03:33:16.881-08:00 Learn to Program Java Adventure Games<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgnR2s5SJ1lmMq1WMsYHtoXnWpHXO38ovlrgrnKp2PVvumbp8LiVazcc7yWTdKeoMAT6k0592WuTmJ_joNB_w8j6Dwk7K5jCuu6l8H3Hpyj3tGH8Bf8m6ZKlGFpiL1SWqObGDHm9yzraU/s800/3dcover800.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="610" data-original-width="800" height="488" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgnR2s5SJ1lmMq1WMsYHtoXnWpHXO38ovlrgrnKp2PVvumbp8LiVazcc7yWTdKeoMAT6k0592WuTmJ_joNB_w8j6Dwk7K5jCuu6l8H3Hpyj3tGH8Bf8m6ZKlGFpiL1SWqObGDHm9yzraU/w640-h488/3dcover800.jpg" width="640" /></a></div><p>I’m pleased to announce my latest book which explains how to write a retro-style text adventure in Java using object oriented techniques. I already have a book on programming adventure games in C#. The new Java book explains all the techniques described in that book so that you can parse user commands (e.g. “put the sword into the sack”), take and drop objects, move around a map, save and load games and so on. But it also goes much further, to explore more advanced techniques.</p><p>For example, it can use adjectives to distinguish between similar objects. Maybe there are three swords here. The user says “take sword”. The game may now reply “Do you mean the gold sword, the silver sword or the Elvish sword”? Or the player may write commands such as “Put the small gold ring into the big brown wooden box.” </p><p>I also explain how to use recursion to ‘unwind’ networks of objects into linear lists. For example, if you have a sack containing three boxes and each box contains three treasures, you would need to navigate a network of objects to locate each treasure. You can either do that recursively each time the player wants to interact with the treasure or you can create a linear list of treasures so that your code can iterate through that list (for 1 to 10, say) instead of recursing down the network of objects.</p><p>And I’ve added a ‘mass’ property to objects. The mass is defined as a value that indicates how difficult that object would be to carry. It’s not really ‘mass’ as a physicist would understand it! So a huge but very light kite might have the same mass as a small but very heavy gold brick. Every time the player picks up an object, the ‘mass’ being carried increases until no more objects can be carried. And it’s no good cheating by putting massive objects into low-mass containers (say, a sack) and then carrying that container. Thanks to recursion, my code calculates the entire mass of containers and everything they contain!</p><p><b>The Little Java Book of Adventure Game Programming</b> is available in paperback or Kindle format, from Amazon stores worldwide:</p><p>Buy from Amazon US: <a href="https://amzn.to/2KZvqb4">https://amzn.to/2KZvqb4</a></p><p>Buy from Amazon UK: <a href="https://amzn.to/3mydF0e">https://amzn.to/3mydF0e</a></p><p>You can <a href="http://bitwisebooks.com/subscribe/">sign up to the Bitwise Books mailing list and download all the source code free</a>. I hope you have fun writing some games!</p><div><br /></div>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-60050676013549744242020-10-05T03:48:00.003-07:002020-10-05T03:48:35.981-07:00Learn C# Programming - FREE!<p>If you've subscribed to my YouTube channel you'll know that I have lots of lessons on programming C, Java, Delphi, Ruby and more. Over the past few months I've been posting a series of videos to help people get up to speed with C# programming. These lessons can be followed in order if you are new to C# or you can just jump in to watch whichever lesson is of interest. This is the latest video...</p><p></p><div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ShOGx6fEEdI" width="560"></iframe></div><div style="text-align: center;"><br /></div><div style="text-align: left;">The complete course is called <i>The Little Course Of C# </i>and you can view all the lessons (more to be added later on) <a href="https://www.youtube.com/playlist?list=PLZHx5heVfgEvndhl2ETJNJKPk22L3K0fD" target="_blank">HERE</a>.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">To be notified whenever I add new lessons, be sure to <a href="https://www.youtube.com/BitwiseCourses?sub_confirmation=1" target="_blank">subscribe to my YouTube channel</a>.</div><p></p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-41294791864236497432020-09-22T04:33:00.000-07:002020-09-22T04:33:01.490-07:00Learn Recursion in Java<p>Recursive programming is surprisingly hard to learn for something that, in essence, is really quite simple. A recursive function is one that calls itself. So, you might have a function called <span style="font-family: courier;">x()</span> which somewhere inside its code calls itself <span style="font-family: courier;">x()</span> rather than some other function such as <span style="font-family: courier;">y()</span>. </p><p>Recursion is a very valuable technique when you want a function to do an operation a certain number of times until it’s run out of things to do. For example, if you want to count all the files in a set of subdirectories you can use recursion to keep looking for more subdirectories until there are no more subdirectories (or subdirectories <i>of</i> subdirectories) to recurse. Then you can count the files in each subdirectory. This sounds like it should be easy to do – and in essence it is. But unless you really understand how recursion works, it can be tricky. </p><p>I teach a whole course on recursion and I also have a book. Either one will teach you all you need to know to understand recursion – what the stack is; how frames are added to and removed from the stack whenever a function is called; how to save values from recursive functions; how to return values; how to avoid infinite recursion and more…</p><p>My course normally costs $45 but if you click this link you can enroll for just $19 (plus any local taxes applicable): <a href="https://bitwisecourses.com/p/recursion-for-programmers/?product_id=778235&coupon_code=RECUR01">https://bitwisecourses.com/p/recursion-for-programmers/?product_id=778235&coupon_code=RECUR01</a></p><p><i>(Valid until end of October)</i></p><p>Alternatively, you can buy my book, <i>The Little Book Of Recursion</i>, from Amazon:</p><p>Amazon (US) <a href="https://amzn.to/2JjrJtq">https://amzn.to/2JjrJtq</a></p><p>Amazon (UK) <a href="https://amzn.to/2YCYx5N">https://amzn.to/2YCYx5N</a></p><p>Or search for its ISBN: 978-1913132057</p><p>The code examples in the course and book are mainly given in C and Ruby. However, recursion works in a similar way in all mainstream languages. To prove this, I’ve translated most of the C code into Java. You can get all the free source code (C, Ruby and Java) just by signing up to my mailing list and I’ll send you the download link: <a href="http://www.bitwisebooks.com">www.bitwisebooks.com</a></p><p>Meanwhile, here’s a short lesson explaining how to write just about the simplest possible recursive function in Java…</p><div style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/GXoqTeAt-bk" width="560"></iframe></div>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-24811270978287690622020-09-08T03:43:00.006-07:002020-09-08T03:43:57.934-07:00 Can’t Upgrade Delphi RADStudio from Embarcadero<p><i>Why I used to love Delphi – but not so much now…</i></p><p>So I loaded up Delphi (Community Edition) this morning and I saw an unhelpful dialog box telling me that the software had expired and prompting me to enter a valid serial. I found my serial number, entered it, but it wasn’t accepted. What was I to do? The damned dialog box didn’t give me any other options.</p><p>Time to Google. Lots of other people had the same problem. Advice was to go to the Embarcadero site and download a new copy of the software: <a href="https://www.embarcadero.com/products/delphi/starter/free-download">https://www.embarcadero.com/products/delphi/starter/free-download</a> </p><p>I did that. Or tried to. Every effort I made to log in failed with a warning that my session had expired. Maybe my browser (Chrome) was the problem? OK, so I tried in Firefox. Same error. In desperation, I tried the Microsoft Edge web browser. Amazingly, this time I managed to log in.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBU-y9cw3EfMWxV9eJjnKP0yQrKWraUWFqC3fqX_Q65DqTj1t5tBa1ZHe1izKG9oc7OzxXHR5_AIhixOgKIKyJskMMcWjIbXFvV1_veUh6yaCSbszyT7PIPabZZid2tojUlFaqMwFa9hE/s1192/delphiinstall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="426" data-original-width="1192" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBU-y9cw3EfMWxV9eJjnKP0yQrKWraUWFqC3fqX_Q65DqTj1t5tBa1ZHe1izKG9oc7OzxXHR5_AIhixOgKIKyJskMMcWjIbXFvV1_veUh6yaCSbszyT7PIPabZZid2tojUlFaqMwFa9hE/w640-h228/delphiinstall.png" width="640" /></a></div><p>I now had to download the latest version of the software, uninstall my old version, install the new one, wait for a new serial number, enter that… anyway, eventually the installation went again successfully.</p><p>Look, I like Delphi. I’ve used its Object Pascal language ever since Delphi was first launched and before that I used its predecessor, Turbo Pascal, since the early 1980s. But, come on, chaps, this download-and-install palaver is nuts. You provide a free edition of Delphi (good) but you make it bomb out after a year and then you go to some lengths to make the reinstallation as painful as possible. It’s a positive incitement to use the open source Object Pascal alternative, Lazarus instead: <a href="https://www.lazarus-ide.org/index.php?page=downloads">https://www.lazarus-ide.org/index.php?page=downloads</a></p><p>The history of the free edition of Delphi is an odd one. From the launch of Delphi 1, way back in 1995, I was the Delphi columnist for <i>PC Plus</i> Magazine in the UK. I wrote Delphi programming columns every month for over ten years and readers could follow along using the free copy of Delphi that its developers, Borland, supplied on the PC Plus cover disk. Whenever a new version of Delphi was released, we had a new free copy on the cover disk.</p><p>Then the Borland programming team split away to form a company called CodeGear and they were quickly bought up by another company called Embarcadero. Sadly, Embarcadero didn’t seem to understand the importance of providing a free edition. I asked for one so that I could teach a course on Delphi. And for the first time ever, my request was refused. So I based that course on Lazarus.</p><p>In the meantime, Microsoft had decided that it would be a jolly good idea to provide free copies of its IDE, Visual Studio, to anyone who wanted one. Visual Studio doesn’t support Pascal as standard but it does support C# – a very good language that was created by Anders Hejlsberg, the man who had previously been responsible for Delphi before Borland made the unfortunate error or losing him and other members of his team to Microsoft. </p><p>Now let me be ruthlessly honest. Delphi/RADStudio is a fine programming environment. But it’s not as good as Visual Studio. Visual Studio is simply the best. Embarcadero must have noticed that the Delphi market was dwindling while C# was very much in the ascendant. Rather (too) late in the day they decided to release a free Community Edition of Delphi. OK, so better late than never.</p><p>But then they go and implement this incredibly infuriating expiry, download and update mechanism. This doesn’t stop you carrying on programming with Delphi after one year is up. All it does, is make you very annoyed with the software and the company for making the update process as inscrutable and infuriating as possible. I have no idea why they do that. It’s bad PR, it’s bad marketing, it’s just really bloody annoying.</p><p>OK, so I finally have Delphi reinstalled. But I now feel so ill disposed towards it that I think I’ll spend the rest of the day programming in Visual Studio!</p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-87303561651449392722020-09-01T03:05:00.006-07:002020-09-01T03:05:39.496-07:00 Program Adventure Games with the BIFF Framework<p>As a passionate adventure game player and programmer, from the 1980s onwards, I’ve decided that the time has come to help other programmers embark on the noble quest of developing retro-style adventure games. I’ve already <a href="https://bitwisecourses.com/" target="_blank">taught a course</a> and written a book (available on <a href="https://amzn.to/33M6sQ4" target="_blank">Amazon US</a>, <a href="https://amzn.to/2YtaBrj" target="_blank">Amazon UK</a> and worldwide) on writing adventure games in C#. But if you’ve never written a game before you might still find it hard to implement all the features needed. Wouldn’t it be great if someone had already written a library of classes that encapsulated all the essential behaviour needed for a game – a parser to interpret text commands, Rooms to create a map, Treasures to create objects, actions to let the player look at objects, take, and drop them or put one object inside another one?</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBl8vZ8NlLlKulgnnsTUy6hOt8GyHLyj_NgHnt4dK3_Fldoo3KCRkKzdBR8T60QseJWN5FsVBpbnLeL0Gq6lpEm8M9k97MDW5SH6IltEVKUm4FjcYBOklaInJUUL4FDM6e5VtAlV8vaH4/s1151/biffCsharp-2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="686" data-original-width="1151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBl8vZ8NlLlKulgnnsTUy6hOt8GyHLyj_NgHnt4dK3_Fldoo3KCRkKzdBR8T60QseJWN5FsVBpbnLeL0Gq6lpEm8M9k97MDW5SH6IltEVKUm4FjcYBOklaInJUUL4FDM6e5VtAlV8vaH4/s640/biffCsharp-2.png" width="640" /></a></div><p>Welcome to BIFF!</p><p>BIFF is short for The <i>Bitwise Interactive Fiction Framework</i>. I’ve spent much of the last year writing this framework in Java and now I’m starting work on translating it into C#. The Java version of BIFF is currently more complete – it can handle reasonably complicated commands such as “Put the small golden egg into the big carved wooden box” or “Unlock the treasure chest with the magic brass key”. I will make BIFF for Java freely available later in the year.</p><p>Since many people have already read my C’# book or followed my course, I decided that, rather than wait until the C# release of BIFF has all the features in the Java version, I would release BIFF for C# in incremental stages so that existing readers and students can carry on developing their games using the new features. This necessarily means that the early releases will always be substantially incomplete. However, if you want to deepen your understanding of game programming, this is a great opportunity for you to try to modify the latest release by adding on additional features. You are free to modify BIFF as required as long as you leave my copyright notice in the comments of the source code.</p><p>To download the code of my C# adventure game book (whether or not you’ve actually bought it!) as well as the current release of BIFF for C#, juts sign up to my mailing list at <a href="http://www.bitwisebooks.com" target="_blank">www.bitwisebooks.com</a>. Meanwhile, here is a short introduction to BIFF…</p><p></p><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/eBMHKD6yu6w" width="560"></iframe></div><p></p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-46697196725456861812020-08-28T05:50:00.005-07:002020-08-28T05:50:26.899-07:00 Adventure Games In C# – the next step<p>If you’ve <a href="https://amzn.to/33M6sQ4" target="_blank">read my book</a> or <a href="https://bitwisecourses.com/">followed my course</a> on adventure game programming in C#, you will already know how to create a map of linked rooms which the player can wander around in order to take or drop treasures. You will be able to communicate with the game using simple English language commands such as “Take the sword” or “Put the coin into the box”. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEEq_tmZH4dS4D9aFWHtnxyRvqggQHyAeTnAoPHCZzTvoQnYJCpGZ5senzJJnSaaDnGmht-bVV9t0-eEtz5vtlKkeEzje2yQ-fMM-7M1kNXDLYBVerqiq1QoYSmMZjFIXynxVdZyV-jV8/s848/biffCsharp-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="409" data-original-width="848" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEEq_tmZH4dS4D9aFWHtnxyRvqggQHyAeTnAoPHCZzTvoQnYJCpGZ5senzJJnSaaDnGmht-bVV9t0-eEtz5vtlKkeEzje2yQ-fMM-7M1kNXDLYBVerqiq1QoYSmMZjFIXynxVdZyV-jV8/w640-h308/biffCsharp-1.png" width="640" /></a></div><p>But what happens if there are several swords in the current location? In that case, when the player enters: “Take the sword” you want to game to reply:</p><p>“So you mean the gold sword, the silver sword or the Elvish sword?”</p><p>And when there are multiple coins boxes here, the player should be able to enter:</p><p>“Put the small silver coin into the big carved wooden box.”</p><p>In order to do that, we need adjectives – “big, small, gold, silver, carved, wooden” and so on. To implement that I’ve begun to extend the code that was supplied with my book. My aim is to create a reusable game framework of ready-to-run classes that you will be able to use to program your own games. This code is in its very early stages at the moment. The main new feature is the addition of adjectives to the parser. I have not yet defined properties to match those adjectives for the treasures. That is, while you can say “take wooden box”, the game doesn’t yet check if the box you want to take really is wooden. I’ll add that in a future update.</p><p>The game framework is called The Bitwise Interactive Fiction Framework (BIFF) for C#. I’ll also shortly be releasing a version of BIFF for Java. To keep up to date with developments and download the source code for BIFF (and for my any of my books and YouTube tutorials), just sign up to our mailing list on: <a href="http://www.bitwisebooks.com">www.bitwisebooks.com</a>.</p>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-13843054943773866782020-08-08T03:27:00.004-07:002020-08-08T03:28:45.809-07:00 Camtasia 2020 Broken Backward Compatibility<p>In my recent <a href="http://www.bitwisemag.com/2020/06/camtasia-2020-review-249.html">review of the screencasting suite, Camtasia 2020</a>, I said that “The latest release of Camtasia is less focussed on adding big new features than making the existing features easier to use”. Since writing that review I’ve become aware of one feature that makes Camtasia harder to use – well, for long-time Camtasia users at any rate. Because the new release no longer supports old Camtasia file formats. That means that if you made some recordings a few years ago and you want to load and edit them with Camtasia 2020, in all probability you won’t be able to do so.</p><p>Put simply, Camtasia 2020 no longer supports older Camtasia project files (with the extension .camproj) nor screen recording files (ending .camrec). I Googled for help on this and the only solution I found (in the Techsmith forums) was to use Camtasia 2019 to convert .camproj files and then load those into Camtasia 2020. But even if you do that, the individual clips (.camrec files) are invalid so in effect the conversion fails. I contacted Techsmith to see if the company had a solution to this problem. This is what the Camtasia project manager replied:</p><p></p><blockquote><p>“You are correct that both camproj (projects) and camrec (recording) formats were retired in 2020. We replaced both formats many years ago (I believe TREC was introduced sometime in 2014 in version 8 of Camtasia) to introduce cross-platform project and recording support between Windows and Mac. You are also correct that the solution for opening camproj files is to open them in 2019 and then convert them to the tscproj format. Unfortunately, there was no easy or fast method of handling this for camrec to TREC format. We investigated to see if this would be worth the investment, but only a very small percentage of imports (something like 0.05%) were camrec format.</p><p>“Probably the easiest workflow for getting these older videos into 2020 will be to install Camtasia 2019, which will install the camrec shell extension. With this, you can right-click on camrec files in the Windows File Explorer and extract the video as an AVI. You can then bring this video into Camtasia 2020 (note that this will not include any cursor data though; if you need the cursor, you will have to produce the video from Camtasia instead).”</p></blockquote>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-91413329523813918922020-07-31T02:55:00.001-07:002020-07-31T02:55:16.591-07:00Medieval Knights and YouTubeMediaeval history is not a subject that I often discuss here but I am going to make an exception to that rule because I've discovered the best history videos I've ever seen (and that includes those made by TV companies such as the BBC or The History Channel). They are all freely available on YouTube and if you have the slightest interest in how knights managed to go into battle wearing armour, how they trained their horses, what they ate, how their swords were made - in fact, if you have any curiosity about what the Middle Ages were really like (not what they <i>look</i> like in the movies), I have this simple advice: subscribe to <a href="https://www.youtube.com/c/ModernHistoryTV/" target="_blank">the Modern History</a> channel today!<div><br /></div><div>This is just one of their videos...</div><div><br /><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/5962hQXCLQ4" width="560"></iframe></div>
</div><div><br /></div>This channel is the creation of Jason Kingsley, the founder and CEO of the Rebellion computer games company. When not running his business, he lives the life of a mediaeval knight. His channel is one of the great gems of YouTube. He really brings history to life. He goes to an armourer to see how suits of armour were made. He puts the 'shield wall' battle strategy to the test. He has sword fights, he jousts. He doesn't just talk about things - he actually <i>does</i> them. I am blown away by this channel. It deserves to be much better known. Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-22723175669984884762020-06-08T03:23:00.003-07:002020-08-08T03:30:48.498-07:00Camtasia 2020 Review<div><b>Camtasia 2020 $249</b></div><div><a href="https://www.techsmith.com/video-editor.html">https://www.techsmith.com/video-editor.html</a></div><div><br /></div><div>Camtasia is a long-established and widely-used screen-casting program, available for both Windows and Mac. It lets you record direct from your computer so it’s ideal for making software demos, tutorials and walkthroughs. Here I look at the newly released update, Camtasia 2020, which I tested on Windows 10.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNSFmEjvRreQCzC3q2GK3m6U3xIcY-lWBZWUbDSdiVuUZi3XESRERx3su3MNpEshTSmbhLAYAtkT398utIWj7gQiOCRJkQ5qVcImbOJHWToyb1jBSIM3io6NZg6SxE_GeeW6KOYsuzV0M/s1000/camtasia2020.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1000" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNSFmEjvRreQCzC3q2GK3m6U3xIcY-lWBZWUbDSdiVuUZi3XESRERx3su3MNpEshTSmbhLAYAtkT398utIWj7gQiOCRJkQ5qVcImbOJHWToyb1jBSIM3io6NZg6SxE_GeeW6KOYsuzV0M/w640-h344/camtasia2020.jpg" width="640" /></a></div><div><br /></div><div>Camtasia is a great tool for making screencasts. It lets you record from the whole screen, from a selected window or from a marked rectangular area. Optionally you can make a simultaneous recording from your webcam and there are even tool to add annotations – boxes, circles or free-form drawings – while you are recording. When you stop recording, your new video clip is added to the Camtasia editor. In the editor you can arrange multiple clips on a stack of tracks. Clips can be cut, moved, slowed down or sped up. Adjacent clips can be smoothly joined using transitions to fade one into the next or create dissolves and folding effects. You can zoom in or out, add annotations and callouts (text and speech bubbles), and apply various types of animation. You can do basic audio editing to change the volume and remove background noise. And, if you recorded your webcam video in front of a coloured backdrop (usually a green screen) you can remove the background colour so you appear ‘in the scene’ that you recorded from the computer screen.</div><div><br /></div><div>The latest release of Camtasia is less focussed on adding big new features than making the existing features easier to use. For example, whereas previously each new project started as a blank workplace waiting for video to be added, there is now the option of picking a pre-designed template that sets up a project complete with intros, outros, animations and titles. You can also create your own templates and save those for re-use.</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyhTlb1B3iEyndcRRv1mxKpTAUEJKH5V5RSIoaWnlyBMZ0lA6hJAnoTBx1NPvJQ0H92p7O2KWfzXgFXtiOqaKK6iYv6azuTrH9Ny7sAKevY0NtPK5FsHT5BF-wtmB2TcuzSgCLHd-mc7w/s1100/templates.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="755" data-original-width="1100" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyhTlb1B3iEyndcRRv1mxKpTAUEJKH5V5RSIoaWnlyBMZ0lA6hJAnoTBx1NPvJQ0H92p7O2KWfzXgFXtiOqaKK6iYv6azuTrH9Ny7sAKevY0NtPK5FsHT5BF-wtmB2TcuzSgCLHd-mc7w/w640-h440/templates.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">These are some of the downloadable templates that can be used when starting a new project</td></tr></tbody></table><div><br /></div><div>The theme management has been extended too. You can create themes to do things such as set the colours and fonts of annotations and callouts. Camtasia 2020 now lets you preview the effects of those themes in the Callouts panel.</div><div><br /></div><div>A Favourites panel has been added to the workplace. This lets you group together the tools and effects you use most often. For example, if I find I frequently use the Fade transition but rarely any others, while I use the noise-removal tool but not the other audio tools, I can click a ‘star’ icon in the corner of each tool or effect in order to add it to the Favourites panel. Then when I need to add transitions, audio effects, visual effects and annotations, I can select them from the Favourites panel instead of having to load up half a dozen different panels and scroll down to find the item I need.</div><div><br /></div><div>The editor has gained a few handy features too. You can now add placeholders to the timeline. These are like ‘empty’ clips. You can move, cut and resize placeholders and then add an actual piece of video by dragging it onto the placeholder. This also makes it easy to replace one clip with another. If, for example, you’ve already finished a project but decide to replace a single clip, you can change the existing clip into a placeholder then add a new clip to it without being forced to re-edit the rest of your project.</div><div><br /></div><div>Tracks have an optional ‘magnet’ mode. This means that adjacent clips automatically snap to one another, eliminating any gaps. The timeline can be detached so that it can be used in its own floating window. This is particularly useful if you are editing on a multi-monitor system, since you can place the timeline fullscreen in the second monitor. </div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4vXeBHpwyb8c8s7Vz9RsZXnexEH-3hTj2ogO0X4nNSaT8EYIN-f9wbvRelrvekFOsHCwmQPCbdWXmsP4f0MNc_vQgmuGxicSvra6vqydGD0Ff5I2L7K0wdQKSGHyHKNytZXwWsz02Ck8/s1000/two-screen.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="321" data-original-width="1000" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4vXeBHpwyb8c8s7Vz9RsZXnexEH-3hTj2ogO0X4nNSaT8EYIN-f9wbvRelrvekFOsHCwmQPCbdWXmsP4f0MNc_vQgmuGxicSvra6vqydGD0Ff5I2L7K0wdQKSGHyHKNytZXwWsz02Ck8/w640-h206/two-screen.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Here I'm editing on a dual-monitor PC. I've detached the timeline so that I can use it fullscreen (left) on my 2nd monitor<br /></td></tr></tbody></table><div><br /></div><div>Track mattes are a new effect that can be enabled for media with ‘transparency’. In effect this removes the transparent areas from an image or video to allow clips beneath it to show through. If you want to share your customised changes to Camtasia – themes, shortcuts, templates and so on – the new package exporting tool simplifies this process by giving you the option of selecting the specific things you want to export. These are saved to a file and can be imported into an installation of Camtasia on another computer.</div><div><br /></div><div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/3OLVlUjGDdk" width="560"></iframe>
</div><div style="text-align: center;"><i>The official Camtasia 2020 demo</i></div><div><br /></div><div>Although Camtasia can be used to edit and produce video recorded from any source (such as digital cameras), its real strength is in recording action from the computer screen. There is little change to the screen-recorder in this release apart from the ability to record up to 60 frames per second (the previous maximum was 30 fps but see <a href="https://support.techsmith.com/hc/en-us/articles/360040788091" target="_blank">HERE</a> for a technical explanation of the actual framerate). It would have been nice to have had the option to record from webcam alone (without also recording from the screen) but this still isn’t possible. If you want to record a plain ‘to camera’ video you have to record the screen as well and then delete the screen-recording in the editor. </div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbVITIKoi1ewEeJSwqcW-3wN8MxEzR_euBXcJwCLdpTACpPCWAxkhLrJE26pA4DnqIcuc868ukbqO89hrf0qi2qUA7_ssn1hvsuwHbnk3ZWO4t6hSJM0lsvei-UM0zwT_Z6L3fLZQW0OI/s1045/recording.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="171" data-original-width="1045" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbVITIKoi1ewEeJSwqcW-3wN8MxEzR_euBXcJwCLdpTACpPCWAxkhLrJE26pA4DnqIcuc868ukbqO89hrf0qi2qUA7_ssn1hvsuwHbnk3ZWO4t6hSJM0lsvei-UM0zwT_Z6L3fLZQW0OI/w640-h104/recording.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The Recording toolbar<br /></td></tr></tbody></table><div><br /></div><div>While there are various free templates, themes and resources available for Camtasia, these have to be downloaded, one at a time, from the web site . It seems to me that it would have been better if they were installed by default or, at any rate, downloaded in a single step. To be honest, this would seem to be the perfect project for Camtasia’s new package import/export feature to let the user import all additional content in one go. Also, bear in mind that while some of these ‘added extras’ are free, others require a subscription. A subscription also gives you access to other resources such as royalty-free video footage, images, music loops and sound effects. The subscription costs £192.95 a year, so you would probably need to use quite a lot of the available content to make it worthwhile.</div><div><br /></div><div>Which brings me to the subject of the cost of Camtasia itself. At around £241, it’s not cheap. Bear in mind that many general-purpose video editors (software aimed mainly at editing video recorded from a camera) now include a screen capture tool, including modestly priced software such as <a href="http://www.bitwisemag.com/2019/09/cyberlink-powerdirector-18-review.html" target="_blank">Cyberlink PowerDirector</a> (about $99) or even free software such as <a href="https://obsproject.com/" target="_blank">OBS Studio</a>.</div><div><br /></div><div>Obviously, if free is what you are looking for, OBS Studio is the way to go. But while it is extremely powerful (and can be used for streaming as well as recording), it’s by no means as easy to use for recording and editing screencasts as Camtasia. If, on the other hand, your main requirement is a general-purposes video editor and only occasionally need to record from the screen, PowerDirector is a good choice. </div><div><br /></div><div>But if screen-casting is your main requirement, Camtasia remains my top recommendation. The purchase price is justified if you regularly need to record and edit pro-quality screencasts. Given the relatively modest updates since the previous release of Camtasia, however, I can’t help thinking that the upgrade cost for existing users (£96.48) is a bit steep.</div><div><br /></div><div>So, in short. Camtasia 2020 is an excellent screen-casting suite. The additions to this new release (as in the last couple of releases – see my reviews of <a href="http://www.bitwisemag.com/2019/09/camtasia-2019-review.html" target="_blank">Camtasia 2019</a> and <a href="http://www.bitwisemag.com/2018/07/camtasia-2018-review.html" target="_blank">Camtasia 2018</a>) are useful but not extensive. While it’s not the cheapest software of its type, if you need an easy-to-use, fast and efficient screen-casting tool that lets you get your work done quickly, Camtasia would be a great choice.</div><div><br /></div><div><b>NOTE</b> - See the update to this review: <a href="http://www.bitwisemag.com/2020/08/camtasia-2020-broken-backward.html">http://www.bitwisemag.com/2020/08/camtasia-2020-broken-backward.html</a></div>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-88713551850420333282020-04-14T02:39:00.002-07:002020-04-14T02:39:57.181-07:00Which programming language should you learn first?There is a huge range of programming languages and a beginner may wonder where to start? Java, C, C++, C#, Python, Pascal, Ruby, Go, etc. The choices are overwhelming. In this video I give my thoughts on which languages would be good to start with - and which ones you should avoid!<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/a76O_JUz88k" width="560"></iframe></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-26000959681770723882020-03-09T03:57:00.002-07:002020-03-09T03:57:38.182-07:00Program A Java Adventure Game - Adding TreasuresHere's the latest video in my Java adventure programming series.<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/sfk2zsFai8I" width="560"></iframe></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-55695344128361283042020-03-04T02:31:00.000-08:002020-03-04T02:31:13.843-08:00How to Attach Notes to TreeView Branches in DelphiHere's my latest video on programming a collapsible outliner using Delphi. In this one, I associate text notes with the branches (nodes) of a TreeView.<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/cxt_OE-LpV4" width="560"></iframe></div>
<br />
To watch this series of videos from the start, go to the playlist: <a href="https://www.youtube.com/playlist?list=PLZHx5heVfgEtHeS6O2ePOkr3f-agvPxi6">https://www.youtube.com/playlist?list=PLZHx5heVfgEtHeS6O2ePOkr3f-agvPxi6</a>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-77600127642384563302020-02-28T02:22:00.000-08:002020-02-28T02:22:28.081-08:00The Little Book Of Delphi Programming (Object Pascal)I’ve been programming in Delphi for over 25 years. What? Can that really be true? It doesn’t seem that long but Delphi’s just had its 25th birthday so it really must be. It was launched in 1995 and I was using the pre-release beta some months before that. I wrote the review of Delphi for <i>PC Plus</i> Magazine and for more than ten years after that I wrote the monthly Delphi programming columns for the same magazine.<br />
<br />
Delphi was the successor to Borland’s hugely successful DOS-based Turbo Pascal and its less successful Windows Pascal (even I can hardly remember that – I think it was called ‘Borland Pascal With Objects’ or something equally unmemorable). At the time, Delphi was, in my view, far the best visual (drag-and-drop, design-and-code) environment for Windows. Its only real competition was Microsoft’s Visual Basic. The trouble is that no matter how visual you make Basic, it’s still Basic. Whereas Delphi used a very nice version of Pascal that had a reasonably modular unit-based system, good Object Orientation and also had low-level features for anyone who might be missing C.<br />
<br />
Anyway, Delphi is still going strong. It’s owned by Embarcadero these days and you can get a free copy here: <a href="https://www.embarcadero.com/products/delphi/starter/free-download">https://www.embarcadero.com/products/delphi/starter/free-download</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwZ-yOkgFExoTNGBrta0pgGViZe5Co__iH9d409ROzMnwzU6zxYQxSw7CKWBDx3Wm8R5NOmqKYLoQlrEQEYBuB24pYCZSRYkhmGjDYMPi0GQJ1t4BeGtNu_n-0sYS8uVEYmj-gasKZGro/s1600/Delphi_Mini.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="489" data-original-width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwZ-yOkgFExoTNGBrta0pgGViZe5Co__iH9d409ROzMnwzU6zxYQxSw7CKWBDx3Wm8R5NOmqKYLoQlrEQEYBuB24pYCZSRYkhmGjDYMPi0GQJ1t4BeGtNu_n-0sYS8uVEYmj-gasKZGro/s1600/Delphi_Mini.png" /></a></div>
<br />
To celebrate Delphi’s 25th birthday, I’ve just released a book for new or intermediate Delphi programmers. It’s called <b>The Little Book Of Delphi</b> and it’s available in paperback or as a Kindle eBook from Amazon.<br />
<br />
The book covers:<br />
<br />
<ul>
<li>Fundamentals of Delphi</li>
<li>The Object Pascal language </li>
<li>Object Orientation</li>
<li>Variables, Types, Constants</li>
<li>Operators and Tests</li>
<li>for loops and while loops</li>
<li>Procedures and Functions </li>
<li>Parameters and Arguments</li>
<li>Arrays and Lists</li>
<li>String Operations</li>
<li>Case Statements</li>
<li>User-defined Types</li>
<li>Constructors and Methods</li>
<li>Creating and Freeing Objects</li>
<li>Inheritance and Encapsulation</li>
<li>Virtual and Overridden Methods</li>
<li>File-handling</li>
<li>Text files and Binary files</li>
<li>Streaming and Serialization</li>
<li>Errors and Exceptions</li>
<li>...and much more</li>
</ul>
<br />
Here are the links:<br />
<br />
Amazon (US)<br />
Paperback: <a href="https://amzn.to/37ZJqHF">https://amzn.to/37ZJqHF</a><br />
eBook: <a href="https://www.amazon.com/dp/B0854D12GJ">https://www.amazon.com/dp/B0854D12GJ</a><br />
<br />
Amazon (UK)<br />
Paperback: <a href="https://amzn.to/392AJxm">https://amzn.to/392AJxm</a><br />
eBook: <a href="https://www.amazon.co.uk/dp/B0854D12GJ">https://www.amazon.co.uk/dp/B0854D12GJ</a><br />
<div>
<br /></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-8109548096408531012020-02-25T07:50:00.000-08:002020-02-25T07:50:06.802-08:00Download Classic Adventurer Magazine FREEThere’s an interview with me (Huw Collingbourne) in the latest edition of the Classic Adventurer Magazine (#8) which you can download free here: <a href="http://classicadventurer.co.uk/">http://classicadventurer.co.uk/ </a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_sW4aK-3jS_BIX7pmxqzRlUKVo1deBgmX0WnRSVs33u5NozAGDwrWD6vDDqgL0h__ks4r-mOO5VEXukjnJKwbloFP3P_r3mBPToTWLMr30yKV0kahwfpnsaviqpi0X3KMDoKrKY5eGg/s1600/classic-adventure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="411" data-original-width="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_sW4aK-3jS_BIX7pmxqzRlUKVo1deBgmX0WnRSVs33u5NozAGDwrWD6vDDqgL0h__ks4r-mOO5VEXukjnJKwbloFP3P_r3mBPToTWLMr30yKV0kahwfpnsaviqpi0X3KMDoKrKY5eGg/s1600/classic-adventure.png" /></a></div>
<br />
In the interview, I discuss everything from <i>The Golden Wombat Of Destiny</i> – the game I wrote back in the '80s – to my recent book, <i>The Little Book Of Adventure Game Programming</i>. There are numerous other articles in the magazine that should be of interest to anyone interested in retro/classic ‘Interactive Fiction’ games.Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-7425557336795810702020-02-24T03:09:00.000-08:002020-02-24T03:09:27.158-08:00Ruby Programming - Instance VariablesWhat the heck is an 'instance' and why does it have its own variables? My latest YouTube video for Ruby programmers explains all...<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/H27i3WuAEVI" width="560"></iframe></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-85599164323824576942020-01-28T04:26:00.001-08:002020-05-15T03:49:49.449-07:00Program an Adventure Game in JavaRegular readers will know that I am passionately keen on retro-style adventure games. Not only are they great fun to play but they are also great fun to program. Don't be fooled into thinking that an adventure game is a trivial program to write, however. It isn't. It requires you to use a very broad range of programming techniques: creating class hierarchies, overriding and overloading methods, generic lists, serialization to save and load networks of mixed data types. And much more.<br />
<br />
I've recently started a YouTube series on programming games in Java. This complements my book, <b>'The Little Book Of Adventure Game Programming'</b> which uses C# as the primary language.<br />
<br />
Anyway, here's the latest video.<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/pFSYsJE0vRs" width="560"></iframe>
</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
To follow the course in sequence, go to the playlist: <a href="https://www.youtube.com/playlist?list=PLZHx5heVfgEvT5BD8TgLmGrr-V64pX7MD">https://www.youtube.com/playlist?list=PLZHx5heVfgEvT5BD8TgLmGrr-V64pX7MD</a></div>
<br />
<div class="MsoNormal">
To make sure you never miss a video, subscribe to the Bitwise Courses YouTube channel: <a href="https://www.youtube.com/BitwiseCourses?sub_confirmation=1">https://www.youtube.com/BitwiseCourses?sub_confirmation=1</a>
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
And if you want to buy my Adventure Game Programming book, here it is:<br />
<br />
<div class="MsoNormal">
Amazon.com<span style="mso-spacerun: yes;"> </span><a href="https://amzn.to/33M6sQ4">https://amzn.to/33M6sQ4</a> <o:p></o:p></div>
<div class="MsoNormal">
Amazon.co.uk<span style="mso-spacerun: yes;"> </span><a href="https://amzn.to/2YtaBrj">https://amzn.to/2YtaBrj</a></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-12673225370436355802020-01-07T03:32:00.000-08:002020-01-07T03:32:12.234-08:00Deleaker Review – finding memory leaks in C++ and DelphiDeleaker <a href="https://www.deleaker.com/">https://www.deleaker.com</a><br />
From $99<br />
<br />
Memory leaks are some of the trickiest things to track down when you are writing programs. Somewhere you allocate a chunk of memory and then later on, that memory isn’t freed when it’s no longer needed. Small memory leaks might not be a problem but when a program allocates huge amounts of memory, you can run into trouble. In a long programming career, I’ve seen people spend weeks trying to track down obscure memory problems. It’s usually quite easy to track down problems that cause your program to crash every 10 minutes. But once every ten days? Not so easy at all.<br />
<br />
Of course, in modern garbage collected languages like C# and Java, memory leaks are no longer a problem – or are they? It’s certainly the case that garbage collection makes life a lot easier. In general, you don’t have to bother about freeing up memory – it’s done automatically. However, you can still get problems if you call system APIs or libraries written in another language where memory is not managed.<br />
<br />
If you have (or think you have) a memory leak problem, then a tool to track down the source of the leak might be useful. One such tool is Deleaker. This comes with a 14 day trial period where you can use the full functionality of the tool. Deleaker helps you find and fix memory leaks in your C, C++ or Object Pascal programs developed using either Microsoft’s Visual Studio or Embarcadero’s RAD Studio/Delphi.<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/suyJfoSeRrQ" width="560"></iframe>
</div>
<div style="text-align: center;">
<i>This is Deleaker’s own video showing integration with RAD Studio.</i></div>
<br />
When installed, Deleaker can either be run from a menu item in your chosen IDE or it can be run as a standalone application so that it is available on a PC without the IDE installed. The licence allows a single user to run Deleaker on multiple PCs which is convenient if you need to use it both on your desktop computer and also on a laptop.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhDbv92yRJRnfaZ-dLwTMDkw6uheF0u7I7Gq8HeXvnbaguGKB-2nxRxGMDZIG410fGlW9PNGI_VmUgrsj7y1BMAljFLOkWin_7bS-X7dFxe6VfdLMWN3GXA_yznjFwNQN4eRWOUzvqQbg/s1600/dealeaker-delphi.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="522" data-original-width="575" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhDbv92yRJRnfaZ-dLwTMDkw6uheF0u7I7Gq8HeXvnbaguGKB-2nxRxGMDZIG410fGlW9PNGI_VmUgrsj7y1BMAljFLOkWin_7bS-X7dFxe6VfdLMWN3GXA_yznjFwNQN4eRWOUzvqQbg/s1600/dealeaker-delphi.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Here I have docked Deleaker into the Delphi IDE. You can keep its window ‘free-floating’ if you prefer.</td></tr>
</tbody></table>
Deleaker has a very nice integration with Visual Studio and Delphi and most of the time it works smoothly though it did crash Visual Studio on one occasion. You can also use it in standalone mode from the console – Deleaker attaches itself to the process you specify so as to perform its magic.<br />
<br />
We tried it out on some very simple programs with a couple of memory leaks and it worked great. At the end of the run, Deleaker will identify the leaks and indicate the source of the leak. However, it doesn’t (and can’t) tell you where you should have freed the memory. But it’s a good start and with some extra coding diagnostics, you should be able to track down memory leaks reasonably easily.<br />
<br />
In my experience, though, simple memory leaks are not the huge problem that they are sometimes made out to be. First, from my own experience early on in my programming career seeing other programmers get in real deep trouble, I’ve been absolutely fanatical about memory allocation. Because of that I’ve never had a serious problem. The other memory problem that Deleaker can’t help with is where you have accidentally reused some freed memory: you have two pointers to the same memory address and you’ve forgotten about the second pointer when you called free on the first. These can be very tricky indeed to track down.<br />
<br />
But where Deleaker does score is keeping track of system resources such as GDI device contexts, handles and the like. It is surprisingly easy to lose track of these because they tend to exist for a long time in the program and the effects of not freeing handles are not obvious – you don’t see memory creeping up and your program slowing down dramatically until the whole of Windows starts to seize up.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW8xjUA3ps82P5YSrhZGhl8kBd94VtT6tjWh_rfGdiWGUONX5dbW9OQdhgjBOYY2Owp48WcMXH3UV1SJB-wmO4wfH4JrRzK6etLa9tVJ2rcceYpvlXaiR1sCP2b7k8jfW_Z0Cwhw2a0fE/s1600/deleaker2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="779" data-original-width="977" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW8xjUA3ps82P5YSrhZGhl8kBd94VtT6tjWh_rfGdiWGUONX5dbW9OQdhgjBOYY2Owp48WcMXH3UV1SJB-wmO4wfH4JrRzK6etLa9tVJ2rcceYpvlXaiR1sCP2b7k8jfW_Z0Cwhw2a0fE/s640/deleaker2.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Here Deleaker has produced a report of some leaks in a Visual Studio C project.</td></tr>
</tbody></table>
Overall, Deleaker is a nice, simple tool that fits in well with Visual Studio and Delphi and makes tracking down memory leaks much easier. It’s not a cure-all for poor programming practice, though. If you have a badly written program, it will tell you that you have a leak and the line that allocated the memory, but it’s up to you to find out where you should have freed it.<br />
<br />
At the end of the day, while you have been careful about memory allocation and resource tracking (and in my case paranoid about it) – how you do you know that you have no memory leaks? Without something like Deleaker you won’t - and here Deleaker does shine in acting as a quality check keeping track of memory and non-obvious system resources: it’s always a lot cheaper to fix bugs before releasing software and any tool such as Deleaker that helps produce bug free software is well worth the money.<br />
<br />
<i>For this review Dermot Hogan reviewed Deleaker for Visual Studio (Huw Collingbourne tested it with Delphi)</i>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-33442330244193517732019-12-10T03:05:00.002-08:002019-12-10T03:05:53.779-08:00Program a Delphi Collapsible Outliner - Deleting NodesIf you've been following my YouTube series on using Delphi to create a Collapsible Outliner, you'll be interested in the latest lesson which explains how to delete nodes (and child nodes).<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/cCJYEjAc1DM" width="560"></iframe>
</div>
The source codes for all the projects in this series is available from the Bitwise Books web site. Just sign up for our newsletter and we'll send you the download links: <a href="http://www.bitwisebooks.com/">http://www.bitwisebooks.com</a>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-50772780885848154192019-11-29T02:20:00.001-08:002019-11-29T02:20:36.217-08:00Learn To Program A Text Adventure GameLooking for the perfect Christmas present for the programmer who “has everything”? May I suggest my newest book, <b>The Little Book Of Adventure Game Programming</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiAfPhmgMAQOhryncvfjwSVyaYFRi12lyXqPAAPUk0VeHAShRLjYHJQp68pGjoKSpyD2S3uyP4kHEUfzKMDQGAJCi0x3Sl0UzprWzcdGBT9XS4yhW7nKrkuqGzQAHf81EDK02y-ODvol4/s1600/Adventure_mini.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="489" data-original-width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiAfPhmgMAQOhryncvfjwSVyaYFRi12lyXqPAAPUk0VeHAShRLjYHJQp68pGjoKSpyD2S3uyP4kHEUfzKMDQGAJCi0x3Sl0UzprWzcdGBT9XS4yhW7nKrkuqGzQAHf81EDK02y-ODvol4/s1600/Adventure_mini.png" /></a></div>
<i>The Little Book Of Adventure Game Programming</i> provides a step-by-step guide to creating a game in C#, which is one of the most important languages on Windows and is also available on macOS and Linux. The programming principles and techniques explained in the book can also be used to write adventure games in other languages such as Java, Ruby or Object Pascal. Short examples (source code also available for download) are provided in those languages. As well as teaching adventure games specifically, this book can also be used as a tutorial to writing C# programs. It covers all the most important features of the C# language.<br />
<br />
This book explains...<br />
<br />
<ul>
<li>How to write Interactive Fiction (IF) games</li>
<li>Creating class hierarchies</li>
<li>How to create a map of linked 'rooms'</li>
<li>Moving the player around the map</li>
<li>Adding treasures to rooms</li>
<li>How to take and drop treasures</li>
<li>Putting objects into containers (sacks, treasure chests etc.)</li>
<li>Using lists and dictionaries</li>
<li>Overridden methods</li>
<li>Overloaded methods</li>
<li>How to save and load games</li>
<li>Designing a game with a user interface</li>
<li>Designing a command-line game to run at the system prompt</li>
<li>...and much more</li>
</ul>
<br />
Available in paperback or for Kindle from Amazon (US): <a href="https://www.amazon.com/dp/1913132080">https://www.amazon.com/dp/1913132080</a> and (UK): <a href="https://www.amazon.co.uk/dp/1913132080">https://www.amazon.co.uk/dp/1913132080</a>Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.comtag:blogger.com,1999:blog-321167072923962337.post-83056615566574262002019-11-26T04:03:00.000-08:002019-11-26T04:03:06.366-08:00Customize the Colours of the Visual Studio Code TerminalI love Microsoft's free multi-language programming editor but I've never found the perfect colour scheme because I'm a traditionalist and like the Terminal to have a black background with green text. In fact, you can change the Terminal to use any colours you like - as I show in this video.<br />
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/fpFEFvlsCvM" width="560"></iframe></div>
Huw Collingbournehttp://www.blogger.com/profile/16846259419002514772noreply@blogger.com