ebook img

Hands on DarkBasic pro : a self-study guide to games programming PDF

778 Pages·2010·10.923 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Hands on DarkBasic pro : a self-study guide to games programming

Hands On DarkBASIC Pro Volume 1 ASelf-Study Guide to Games Programming AlistairStewart Digital Skills Milton Barr Girvan Ayrshire KA26 9TY www.digital-skills.co.uk Copyright ©AlistairStewart2005 Allrightsreserved. Nopartofthisworkmaybereproduced orused inanyform without the writtenpermissionofthe author. Although everyefforthas beenmade to ensureaccuracy, the author and publisheracceptneitherliabilitynorresponsibility foranylossordamagearisingfromthe information inthisbook. Allbrandnames and productnames are trademarksoftheirrespective companiesandhave beencapitalisedthroughout the text. DarkBASICProfessionalisproduced byTheGameCreatorsLtd CoverDesignbyNeilKing2007 Printed September2005 2ndPrintingNovember2005 3rdPrintingJanuary2006 4th PrintingNovember2006 5th PrintingFebruary2007 6th PrintingSeptember2007 7th PrintingFebruary2008 8th PrintingSeptember2009 (with corrections) 9th PrintingJuly2010(withcorrections) Title : HandsOnDarkBASICPro Volume1 ISBN : 1-874107-08-4 ISBN-13 978-1-874107-08-8 OtherTitlesAvailable: HandsOn DarkBASICProVolume2 HandsOn Pascal HandsOn C++ HandsOn Java HandsOn XHTML Table Of Contents Chapter 1 Designing Algorithms DesigningAlgorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 FollowingInstructions . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ControlStructures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ComplexConditions . . . . . . . . . . . . . . . . . . . . . . . . . 9 Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 OperationsonData . . . . . . . . . . . . . . . . . . . . . . . . 22 LevelsofDetail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 CheckingforErrors . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Chapter 2 Starting DarkBASIC Pro ProgrammingaComputer . . . . . . . . . . . . . . . . . . . . . . . . . 38 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 TheCompilationProcess . . . . . . . . . . . . . . . . . . . . . . . . 38 StartingDarkBASICPro . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 DarkBASICProFiles . . . . . . . . . . . . . . . . . . . . . . . . . . 40 GettingStartedwithDarkBASIC . . . . . . . . . . . . . . . . . . . . 41 FirstStart-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 SubsequentStart-Ups . . . . . . . . . . . . . . . . . . . . . . . 41 SpecifyingaProject . . . . . . . . . . . . . . . . . . . . . . . . 41 AFirstProgram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 SavingYourProject . . . . . . . . . . . . . . . . . . . . . . . . 44 FirstStatementsinDarkBASICPro . . . . . . . . . . . . . . . . . . . . 45 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 EndingaProgram . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 TheENDStatement . . . . . . . . . . . . . . . . . . . . . . . . 45 TheWAITKEY Statement . . . . . . . . . . . . . . . . . . . . . 45 AddingComments . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 OutputtingtotheScreen . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 ThePRINTStatement . . . . . . . . . . . . . . . . . . . . . . . 48 PositioningTextontheScreen . . . . . . . . . . . . . . . . . . . . . 51 TheSETCURSORStatement . . . . . . . . . . . . . . . . . . . 51 TheTEXTStatement . . . . . . . . . . . . . . . . . . . . . . . 52 TheCENTERTEXTCommand . . . . . . . . . . . . . . . . . . 53 ChangingtheOutputFont . . . . . . . . . . . . . . . . . . . . . . . 54 TheSETTEXTFONTStatement . . . . . . . . . . . . . . . . . 54 TheSETTEXTSIZEStatement . . . . . . . . . . . . . . . . . . 55 TheSETTEXTTOStatement . . . . . . . . . . . . . . . . . . . 55 ChangingColours . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 HowColoursareDisplayed . . . . . . . . . . . . . . . . . . . 56 TheRGBStatement . . . . . . . . . . . . . . . . . . . . . . . . 57 TheINKStatement . . . . . . . . . . . . . . . . . . . . . . . . . 58 TheSETTEXTOPAQUEStatement . . . . . . . . . . . . . . . 60 TheSETTEXTTRANSPARENTStatement. . . . . . . . . . . . 60 TheCLSStatement . . . . . . . . . . . . . . . . . . . . . . . . 61 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SomeDisplayTechniques . . . . . . . . . . . . . . . . . . . . . . . . . 64 ScreenResolution . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 TheSETDISPLAY MODEStatement . . . . . . . . . . . . . . . 64 ChoosingaTextFont . . . . . . . . . . . . . . . . . . . . . . . . . 65 ErasingText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 ShadowText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 EmbossedText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Chapter 3 Data ProgramData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 IntegerVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 75 RealVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 StringVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 76 UsingMeaningfulNames . . . . . . . . . . . . . . . . . . . . . 77 NamingRules . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 AllocatingValuestoVariables . . . . . . . . . . . . . . . . . . . . . . . 79 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 TheAssignmentStatement . . . . . . . . . . . . . . . . . . . . . . 79 AssigningaConstant . . . . . . . . . . . . . . . . . . . . . . . 79 CopyingaVariable(cid:146)sValue . . . . . . . . . . . . . . . . . . . . 80 CopyingtheResultofanArithmeticExpression . . . . . . . . . . 80 OperatorPrecedence . . . . . . . . . . . . . . . . . . . . . . . . . 83 UsingParentheses . . . . . . . . . . . . . . . . . . . . . . . . . 84 VariableRange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 StringOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 ThePRINTStatementAgain . . . . . . . . . . . . . . . . . . . . . . 85 OtherWaystoStoreaValueinaVariable . . . . . . . . . . . . . . . 87 TheINPUTStatement . . . . . . . . . . . . . . . . . . . . . . . 87 TheREADandDATAStatements . . . . . . . . . . . . . . . . . 88 TheRESTOREStatement . . . . . . . . . . . . . . . . . . . . . 91 TheTimeandDate . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 TheTIMERStatement . . . . . . . . . . . . . . . . . . . . . . . 91 TheGETTIME$Statement . . . . . . . . . . . . . . . . . . . . 92 TheGETDATE$Statement . . . . . . . . . . . . . . . . . . . . 93 GeneratingRandomNumbers . . . . . . . . . . . . . . . . . . . . . 93 TheRNDStatement . . . . . . . . . . . . . . . . . . . . . . . . 93 TheRANDOMIZEStatement . . . . . . . . . . . . . . . . . . . 94 StructuredEnglishandPrograms . . . . . . . . . . . . . . . . . . . 95 UsingVariablestoStoreColourValues . . . . . . . . . . . . . . . . 96 NamedConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 TestingSequentialCode . . . . . . . . . . . . . . . . . . . . . . . . 97 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 DeterminingCurrentSettings . . . . . . . . . . . . . . . . . . . . . . . 100 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 ScreenSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 TheSCREENHEIGHTStatement . . . . . . . . . . . . . . . . 100 TheSCREENWIDTHStatement . . . . . . . . . . . . . . . . 100 TheSCREENDEPTHStatement . . . . . . . . . . . . . . . . 101 ColourComponents . . . . . . . . . . . . . . . . . . . . . . . . . 101 TheRGBRStatement . . . . . . . . . . . . . . . . . . . . . . 101 TheRGBGStatement . . . . . . . . . . . . . . . . . . . . . . 102 TheRGBBStatement . . . . . . . . . . . . . . . . . . . . . . 102 TextSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 TheTEXTBACKGROUNDTYPEStatement . . . . . . . . . . 103 TheTEXTSTYLEStatement . . . . . . . . . . . . . . . . . . 103 TheTEXTSIZEStatement . . . . . . . . . . . . . . . . . . . 104 TheTEXTFONT$Statement . . . . . . . . . . . . . . . . . . 104 TheTEXTWIDTHStatement . . . . . . . . . . . . . . . . . . 104 TheTEXTHEIGHTStatement . . . . . . . . . . . . . . . . . . 105 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Chapter 4 Selection BinarySelection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 TheIFStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 CompoundConditions-theANDandOROperators . . . . . . 116 TheNOTOperator . . . . . . . . . . . . . . . . . . . . . . . . 118 ELSE-CreatingTwoAlternativeActions . . . . . . . . . . . . 119 TheOtherIFStatement . . . . . . . . . . . . . . . . . . . . . . . 120 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Multi-WaySelection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 NestedIFStatements . . . . . . . . . . . . . . . . . . . . . . . . 122 TheSELECTStatement . . . . . . . . . . . . . . . . . . . . . . . 124 TestingSelectiveCode . . . . . . . . . . . . . . . . . . . . . . . . 127 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Chapter 5 Iteration Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 TheWHILE..ENDWHILEConstruct . . . . . . . . . . . . . . . . . 134 TheREPEAT..UNTILConstruct . . . . . . . . . . . . . . . . . . 136 TheFOR..NEXTConstruct . . . . . . . . . . . . . . . . . . . . . 138 FindingtheSmallestValueinaListofValues . . . . . . . . . . 142 UsingFORwithREADandDATA . . . . . . . . . . . . . . . . 144 TheEXITStatement . . . . . . . . . . . . . . . . . . . . . . . 145 TheDO..LOOPConstruct . . . . . . . . . . . . . . . . . . . . . . 146 TheWAITmillisecondsStatement . . . . . . . . . . . . . . . . 147 TheSLEEPStatement . . . . . . . . . . . . . . . . . . . . . . 147 NestedLoops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 NestedFORLoops . . . . . . . . . . . . . . . . . . . . . . . 149 TestingIterativeCode . . . . . . . . . . . . . . . . . . . . . . . . 150 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Chapter 6 Drawing Statements DrawingOnTheScreen . . . . . . . . . . . . . . . . . . . . . . . . . 160 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 BasicDrawingCommands . . . . . . . . . . . . . . . . . . . . . . 160 TheDOTStatement . . . . . . . . . . . . . . . . . . . . . . . 160 ThePOINTStatement . . . . . . . . . . . . . . . . . . . . . . 161 TheLINEStatement . . . . . . . . . . . . . . . . . . . . . . . 162 TheBOXStatement . . . . . . . . . . . . . . . . . . . . . . . 163 TheCIRCLEStatement . . . . . . . . . . . . . . . . . . . . . 164 TheELLIPSEStatement . . . . . . . . . . . . . . . . . . . . . 165 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 DemonstratingBasicShapes . . . . . . . . . . . . . . . . . . . . . . . 167 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 AFirstLookatAnimation . . . . . . . . . . . . . . . . . . . . . . . . 169 BasicConcepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 HowtoRemoveanObjectfromtheScreen . . . . . . . . . . . . . 169 HowtoMoveanObject . . . . . . . . . . . . . . . . . . . . . . . 170 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Chapter 7 Modular Programming Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 DesigningaFunction. . . . . . . . . . . . . . . . . . . . . . . 176 CodingaFunction . . . . . . . . . . . . . . . . . . . . . . . . 177 CallingaFunction . . . . . . . . . . . . . . . . . . . . . . . . 177 AnotherExample . . . . . . . . . . . . . . . . . . . . . . . . . 179 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Pre-conditions . . . . . . . . . . . . . . . . . . . . . . . . . . 182 TheEXITFUNCTIONStatement . . . . . . . . . . . . . . . . . 182 ReturnTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 LocalVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 186 GlobalVariables . . . . . . . . . . . . . . . . . . . . . . . . . 187 DesigningRoutines . . . . . . . . . . . . . . . . . . . . . . . . . . 188 SpecifyingaPost-Condition . . . . . . . . . . . . . . . . . . . 188 TheDrawTextLineMini-Spec . . . . . . . . . . . . . . . . . . 188 CreatingModularSoftware . . . . . . . . . . . . . . . . . . . . . . 191 Top-DownProgramming . . . . . . . . . . . . . . . . . . . . . . . 195 Bottom-UpProgramming . . . . . . . . . . . . . . . . . . . . . . . 197 StructureDiagrams . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 CreatingaSubroutine . . . . . . . . . . . . . . . . . . . . . . . . 201 CallingaSubroutine . . . . . . . . . . . . . . . . . . . . . . . . . 202 TheGOSUBStatement . . . . . . . . . . . . . . . . . . . . . 202 VariablesinaSubroutine . . . . . . . . . . . . . . . . . . . . 202 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Chapter 8 String Functions StandardStringFunctions . . . . . . . . . . . . . . . . . . . . . . . . 210 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 StringOperations . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 TheLENStatement . . . . . . . . . . . . . . . . . . . . . . . 210 TheUPPER$Statement . . . . . . . . . . . . . . . . . . . . . 211 TheLOWER$Statement . . . . . . . . . . . . . . . . . . . . 212 TheLEFT$Statement . . . . . . . . . . . . . . . . . . . . . . 212 TheRIGHT$Statement . . . . . . . . . . . . . . . . . . . . . 213 TheMID$Statement . . . . . . . . . . . . . . . . . . . . . . . 213 TheASCStatement . . . . . . . . . . . . . . . . . . . . . . . 214 TheCHR$Statement . . . . . . . . . . . . . . . . . . . . . . 215 TheSTR$Statement . . . . . . . . . . . . . . . . . . . . . . 215 TheVALStatement . . . . . . . . . . . . . . . . . . . . . . . 216 TheSPACE$Statement . . . . . . . . . . . . . . . . . . . . . 217 TheBIN$Statement . . . . . . . . . . . . . . . . . . . . . . . 217 TheHEX$Statement . . . . . . . . . . . . . . . . . . . . . . 218 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 User-DefinedStringFunctions . . . . . . . . . . . . . . . . . . . . . . 220 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 CreatingNewStringFunctions . . . . . . . . . . . . . . . . . . . . 220 ThePos()Function . . . . . . . . . . . . . . . . . . . . . . . . 220 TheOccurs()Function . . . . . . . . . . . . . . . . . . . . . . 221 TheInsert$()Function . . . . . . . . . . . . . . . . . . . . . . 221 TheDelete$()Function. . . . . . . . . . . . . . . . . . . . . . 222 TheReplace$()Function . . . . . . . . . . . . . . . . . . . . . 222 TheCopy$()Function . . . . . . . . . . . . . . . . . . . . . . 222 UsingYourRoutinesinOtherPrograms . . . . . . . . . . . . . . . 223 The#INCLUDEStatement . . . . . . . . . . . . . . . . . . . . 223 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Chapter 9 Hangman CreatingaFirstGame . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 TheRulesoftheGame . . . . . . . . . . . . . . . . . . . . . . . . 230 WhatParttheComputerPlaysintheGame . . . . . . . . . . . . . 230 DesigningtheScreenLayout . . . . . . . . . . . . . . . . . . . . . 231 GameData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 GameLogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 GameDocumentation . . . . . . . . . . . . . . . . . . . . . . . . 233 ImplementingtheDesign . . . . . . . . . . . . . . . . . . . . . . . 237 AddingInitialiseGame() . . . . . . . . . . . . . . . . . . . . . 238 AddingThinkOfWord() . . . . . . . . . . . . . . . . . . . . . . 239 AddingDrawInitialScreen(). . . . . . . . . . . . . . . . . . . . 241 AddingGetGuess() . . . . . . . . . . . . . . . . . . . . . . . 243 AddingCheckForLetter() . . . . . . . . . . . . . . . . . . . . . 247 AddingDrawLetter() . . . . . . . . . . . . . . . . . . . . . . . 248 AddingAddToHangedMan() . . . . . . . . . . . . . . . . . . . 249 AddingWordGuessed() . . . . . . . . . . . . . . . . . . . . . 249 AddingHangedManComplete() . . . . . . . . . . . . . . . . . 249 AddingGameOver() . . . . . . . . . . . . . . . . . . . . . . . 249 KeepingaTestLog . . . . . . . . . . . . . . . . . . . . . . . . . . 250 FlawsintheGame . . . . . . . . . . . . . . . . . . . . . . . . . . 250 OmissionsfromtheCode . . . . . . . . . . . . . . . . . . . . 250 DeviatingfromtheOriginalSpecifications . . . . . . . . . . . . 251 FinalTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.