;------------------------------------------------------------------------------- ; ; ;-------------------------------; ; ; Conditions ; ; ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,; ; ; This part contains two sections. ; You can copy and paste each section ; to a new program to try it out, if you want. ; ;------------------------------------------------------------------------------- ; ; Programming is a lot like talking simple english sometimes. ; Suppose we want to know if we have enough money to buy something. ; ; Say, we have 100 credits (in the year 3207). ; Money = 100 ; ; And we want to buy a new ultramolecular drive. ; Suppose there are 2 versions available, ; the cheap one, and the expensive one :P ; Cheap_Drive = 50 Expensive_Drive = 150 ; ; So how do you find out what we can afford? ; Let's convert english to code - it really works miracles. ; Watch the following lines closely. ; ; 1) First, when can we afford something? ; When we have enough money. ; ; 2) So, if we have more money, then we can afford it. ; ; 3) Furthermore, if the amount of money we have is greater than the price of ; the thing we want to buy, then we can afford it. ; ; 4) If amount of money is greater than value of thing, then we can afford it. ; ; 5) If money is greater than value, then we can afford it. ; ; 6) If Money > Cheap_Drive Then Print "We can afford it" ; ; Almost correct. ; Thing is, we can also afford it when our amount of money ; is equal to what we want to buy. ; If Money >= Cheap_Drive Then Print "We can still afford it" ; ; Here's how it works (syntax): ; ; IF (condition) THEN (action) ; ; Let's take a look at the condition first. ; What if we were to stick it in a variable? (say what?) ; Condition = Money >= Cheap_Drive Print "Can afford cheap drive: " + Condition ; Condition = Money >= Expensive_Drive Print "Can afford expensive drive: " + Condition ; ; Syntax: ; ; Variable = (condition) ; ; In fact, you can stick pretty much anything in a variable :P ; ; What happens is when the result of a comparison is true, ; e.g. if Money is indeed more than Cheap_Drive, ; the resulting value is 1. ; ; When the result of a comparison is false, the value is 0. ; ; I bet you can guess the resulting value of the comparison below. ; Condition = Money = Money Print "Our money is our money: " + Condition ; ; What happens here is: ; Money is compared with Money; ; ; Condition = ( Money = Money ) ; ; Money is indeed equal to Money, so the resulting value is 1. ; ; Coincidently there are 2 keywords which relate to this. ; They are True, and False, where True equals 1, and False equals 0. ; So when you type: ; Condition = True ; ; Then Condition contains a value of 1 indeed. ; So True and False match well with comparisons. ; ; To further bedazzle you there's the Not keyword. ; It reverses a comparison. ; ; So ; Condition = Not False ; ; equals True. ; ; And ; Condition = Not True ; ; equals False. ; ; Actually, Not will turn any value not equal to zero into False (zero). ; ; Here, take a look at the following code: ; Condition = 200 If Condition Then Print "We have a condition" ; ; Condition is not equal to 1, but the action is still executed. (eh?) ; The actions will be executed when the resulting Condition is non-zero. ; Again, that means anything not equal to False (zero). ; ; Comparisons generally use one of these: =, <, >, >=, <= or <>. ; Basically the same as in maths. ; ; You can even combine maths with comparisons, ; and there are a lot of various other keywords (Not, And, Or, etc) ; and operators (+, -, /, *, etc) you can use. ; ; You should find a list of all these ; with a lot of more technical details ; in the language reference which can be ; accessed from the first screen you see ; when you start Blitz. ; ; Let's try combining a comparison with some simple maths. ; Result = Money > Expensive_Drive If Result + 1 Then Print "We still have a condition" ; ; We don't have enough money for the expensive drive. ; So that would mean False, e.g. 0. ; We add 1 to that (the IF condition), so we get... 1. ; 1 is non-zero so our action (Print) is executed. ; ; Now, here's another way to use IFs. ; ; IF (condition) THEN ; (action) ; (action) ; END IF ; ; That way you can execute multiple actions when a condition is met. ; ; Okay now look at this: ; If True Then Print "It's true!" Else Print "It's not true!" ; ; Which can also be written as: ; If True Print "It's true!" Else Print "It's not true!" End If ; ; - The Then is missing! ; That's right, it's completely optional. ; Same as ever, coming down to personal preference :) ; Use it in any way you see fit. ; ; - What about the Else? ; The Else part will be executed when the (condition) is False. ; ; Here's the syntax: ; ; IF (condition) THEN ; (action) ; (action) ; ELSE ; (action) ; (action) ; END IF ; ; Ofcourse the examples above are not very useful :) ; So we'll return to our money. ; If ( Money >= Cheap_Drive = True ) Then Print "We can afford the cheap drive" Else Print "We can't afford the cheap drive" End If ; ; Actually you don't need the = True part, ; and those brackets () are again, optional. ; But in this case the brackets () improve readability. ; In other cases you might need them to force the order of evaluation. (say what?) ; ; Comparisons, maths, etc are handled, calculated, evaluated in specific order. ; For example, in maths, multiplication has priority over addition. ; Result = 10 + 10 * 10 ;( Results in 110 ) ; ; So if you wanted to add first and multiply later ; Result = ( 10 + 10 ) * 10 ;( Results in 200 ) ; ; the brackets would come in handy :) ; You can apply this in any evaluation. ; Print ((((((((((((((((( 1 ))))))))))))))))) ; ; Anyway, I think we figured out by now that we can afford the cheap drive. ; You try figure out how to find out if we can afford the expensive drive :P ; ; Here's an interesting solution: ; If Money >= Expensive_Drive Print "We can afford the expensive drive!" Else If Money >= Cheap_Drive Print "We can afford the cheap drive" Else Print "We can't afford anything :P" End If ; ; You can stack IFs like that. ; Else after Else after Else. ; ; Syntax: ; ; IF (condition1) THEN ; (action) ; (action) ; ELSE IF (condition2) THEN ; (action) ; (action) ; ELSE IF (condition3) THEN ; (action) ; (action) ; END IF ; ; Be aware though that, as with most things, ; the list is read from top to bottom. ; So if you compare with a Cheap_Drive first, ; it will never tell you that you have enough ; to buy the expensive drive :/ ; ; Ofcourse what we've done so far is comparing integers with integers. ; You can also compare floats, strings and pointers. ; But we'll get to those later on in variable collections. ; ; Imagine you have an amount of money like before. ; Money = 100 ; ; What if you wanted to check if it was in a certain range? ; Defined by a minimum and maximum value. ; Minimum = 50 Maximum = 150 ; ; Here's one way; ; If Money >= Minimum If Money <= Maximum Print "In range! (1)" End If End If ; ; Here's another; ; If ( Money >= Minimum ) And ( Money <= Maximum ) Print "In range! (2)" End If ; ; Yes, these brackets are optional, ; in this case :) ; ; Let's set our Money to another value, ; so it falls outside our range. ; Money = 0 ; ; Now we can check if it's indeed out of range. ; If Not Money >= Minimum And Money <= Maximum Print "Out of range! (1)" End If ; ; Here's another way; ; If Money < Minimum Or Money > Maximum Print "Out of range! (2)" End If ; ;------------------------------------------------------------------------------- ; ; Suppose you're interested in buying some weapons. ; And there are a number of weapons you can choose from. ; We'll give each weapon a unique number. ; Const Tazergun = 1 Const Lazergun = 2 Const Phazergun = 3 ; ; And we pick a weapon. ; Weapon = Lazergun ; ; It's actually a lot like the 'state-of-life' from the first part. ; So I'll refer to these as so called state identifiers. ; ; Now suppose we want to display on screen ; which weapon we have selected. ; Select Weapon Case Tazergun Print "Tazergun" Case Lazergun Print "Lazergun" Case Phazergun Print "Phazergun" End Select ; ; You could also do it like this: ; Select Weapon Case Tazergun : Print "Tazergun" Case Lazergun : Print "Lazergun" Case Phazergun : Print "Phazergun" End Select ; ; If you would convert this code to IFs, ; here's what it would look like: ; If Weapon = Tazergun Then Print "Tazergun" Else If Weapon = Lazergun Then Print "Lazergun" Else If Weapon = Phazergun Then Print "Phazergun" End If ; ; We know that each weapon ; (Tazergun, Lazergun and Phazergun) ; has a unique number (1, 2 and 3). ; ; Now what if we were buying ; an unregistered weapon so to speak. ; Weapon = 6 ; ; We could add a number ; for each weapon not registered. ; But we can also do this: ; Select Weapon Case Tazergun : Print "Tazergun" Case Lazergun : Print "Lazergun" Case Phazergun : Print "Phazergun" Default : Print "-Unregistered-" End Select ; ; Just the addition of Default ; and any number not in our list ; will end up as being an unregistered weapon. ; ; Here's what it looks like using IF statements: ; If Weapon = Tazergun Then Print "Tazergun" Else If Weapon = Lazergun Then Print "Lazergun" Else If Weapon = Phazergun Then Print "Phazergun" Else Print "-Unregistered-" End If ; ; Note the added Else. ; E.g. very similar to the Default. ; WaitKey End ; ;-------------------------------------------------------------------------------