Welcome! here is my second tutorial for my help section. I'm actually working on it (I know it's hard to believe, but I promise I'll finish all my chapters, some day.) Well, here's what you'll learn this time. 1. What else can I do with variables? 2. If Then statement 3. Loops 4. for-next (loop) 5. do-while, loop-until (loop) 6. goto (loop) 7. gosub (loop) 8. while-wend (loop) 9. on-gosub, on-goto (loop) 10. select case (loop) 11. inkey$ tip: if you get into an endless loop press ctrl and break (usually break is also the pause button) ______________________________________________________________________________ What else can I do with variables? Well, last chapter we taught you how to make a variable, but what do we do with it once we have it? Tons of stuff, almost the whole language is based on variables, because most programs will do something depending on what the variables are. for example if we had a racing game depending on what direction the car was facing, what button we pressed, what car we are using, and other stuff then we would move a certain way. Well, this has many variables what direction we're facing what button was pressed what car was being used and whatever other variables we wanted to use to determine how it moved So in this chapter you will learn how to tell the computer what to do when a variable equals a certain thing. ______________________________________________________________________________ If-Then statement One way to make the computer do something when a variable equals a certain thing is an If-Then statement here's how it works: If a$ = "devin" THEN PRINT "hi, devin" this can work in many other ways also, it can be any type of variable and after the THEN it can do anything we want (ex. locate, input, print, color, cls, or whatever.) ______________________________________________________________________________ Loops What if I want to do the same code over and over again (do I have to keep typing it?) No, use loops. There are tons of kinds of loops and here they are: for-next (loop) do while (loop) loop until (loop) goto (loop) gosub (loop) while-wend (loop) on-gosub (loop) on-goto (loop) select case (loop) And that's all I can think of, but if I remember any other important ones I'll add them to other chapters. ______________________________________________________________________________ For-Next (Loop) Here is the easiest type of loop: FOR a = 1 TO 10 PRINT "hi" NEXT a The numbers 1 to 10 can be changed to anything you want, and print "hi" can be any other statement, or a bunch of statements if you want. What this loop would do is print "hi" and then make 1 to 10 change to 2 to 10 and print "hi" again and it would eventually stop when it gets to 10 to 10 another ex. FOR a = 23 TO 50 INPUT "what is your name"; name$ PRINT "hi"; name$ NEXT a Now what if we wanted to go backward? FOR a = 50 TO 1 STEP -1 INPUT "what is your name"; name$ PRINT "hi"; name$ NEXT a In this example a will start at 50, and it will be subtracted by one until it reaches one. You can change the step to any number you want, but it must be a subtraction sign in this case because 50 will never get to 1 by adding. You can also do it the other way. FOR a = 1 TO 500 STEP +5 INPUT "what is your name"; name$ PRINT "hi"; name$ NEXT a this time instead of 1 getting 1 higher every time it would get 5 higher every time so it would get to 500 in 100 loops instead of 500. ______________________________________________________________________________ Do While, Loop Until (loop) here's another type of loop: x = 3 DO WHILE x = 3 PRINT "hi" IF INKEY$ = CHR$(27) THEN x = 4 LOOP This time instead of going a certain number of times, it goes until a certain condition is met. It will keep printing "hi" until they press escape and makes x = 4 instead of 3. here's another kind: DO UNTIL x > 3 PRINT "hi" x = x + 1 LOOP This time it keeps printing "hi", and keeps making x 1 higher until x is bigger than 3. You can also put the until x > 3, and while x = 3 after the loop. ex. DO PRINT "hi" x = x + 1 LOOP UNTIL x > 3 This is almost the exact same thing. The only difference is where it checks if x > 3. It usually doesn't really matter which one you use unless x must be checked after the loop is done instead of before the next loop. Also instead of x > 3 you can use anything. ex. DO UNTIL INKEY$ = CHR$(27) LOOP this will keep looping until the press escape. ______________________________________________________________________________ Goto goto is another very simple word. here's how you use it. 1 PRINT "hi" GOTO 1 in this case the computer would never quit printing "hi" because it would go to the number 1 and print "hi" and keep going, so this isn't a very helpful loop, but what if we did this 1 INPUT "what is your name"; name$ IF name$ = "devin" THEN GOTO 2 IF name$ = "garner" THEN GOTO 3 CLS GOTO 1 2 PRINT "nice name" END 3 PRINT "cool name" END See how I mixed up all of our words from earlier into one little program, here's what it would do: ask my name if I typed devin it would print nice name if I typed garner it would print cool name and if I didn't type either one it would clear the screen and ask again. Now this isn't a great program, because it's really stupid, but you could do something like this to make many things, like ask them what game they wanted to play and then take them to the line number where that specific game starts. also I showed you another word END (it's obvious isn't it.) it ends the program. (wow!) if you don't type end at the very end of the program it will end by itself, but if they were playing and they died you would type end and it would end it even if it wasn't the last line in the program. Now this end command will take them right back to the editor where you typed your code (not very good unless you are testing to make it work) but we don't want whoever is playing to get frieked out and be able to see your code, we want it to take them right back to dos. Well, I'll tell you. Use SYSTEM instead of END, but in order for it to work you must start the game right from dos. So type this at the command line. c:/>qbasic/run program.bas and program will be whatever you named it. Or you can make a batch file so it will do it for them, just like a compiled exe. ex. c:/>edit this will take you to the dos editor. then you type this @qbasic/run program.bas and save the file as program.bat where program is the name of your normal qbasic file. This would make it so all they have to do is type program(whate- ver the program is called)and it would start them right in the program, and take them back to dos when it ended. ______________________________________________________________________________ Gosub gosub is almost exactly like a goto statement except it can go back to where it came from. ex. GOSUB 1 END 1 PRINT "hi" RETURN what this would do is goto 1 and print hi then return would make it go back to where it came from, but it goes one line after it, so it would goto the end and the program would stop. No your never going to want to do this thing, but there are tons of ways to use it in a racing game: if they hit a certain key goto a spot where it moves them, and then go back to where they can press a key again. also for your line numbers it can use names too. like this: name: it must have a : at the end of the name, but it works exactly like a line number but if you give it a name, you can describe where it takes you like movemyguy: so you know later when your making changes what exactly is going to be done. also if you want to remind yourself what something is going to do you press ' ex. IF INKEY$ <> "" THEN GOTO movemyguy ' this part will wait tell I press something, and goto movemyguy this way qbasic won't look at whatever is after the ' so you can type anything you want without qbasic realizing it's there. Also when you goto a line name you don't have to have the : but you can, but when you are making the line name you do. ex. goto moveme moveme: end -or- goto moveme: moveme: end It works the same either way. ______________________________________________________________________________ While-Wend ex. WHILE x > 3 PRINT "hi" x = x + 1 WEND this is exactly like the do-while, loop-until stuff, I don't know why they made so many, but they did while = do while wend = loop see same thing, even try switching them around it does the same exact thing. ______________________________________________________________________________ Now they get a little harder On gosub, On goto here's how they work: FOR a = 1 TO 3 ON a GOSUB 1, 2, 3 NEXT a 1 PRINT 1 RETURN 2 PRINT 2 RETURN 3 PRINT 3 RETURN so the on gosub will go to line 1 if a equals 1, line 2 if it equals 2 and so on, and you can have whatever line numbers you want because the first number always is if a equals 1, and second is 2, and so on. and you can have any variable it doesn't have to be a and it doesn't have to be a for-next loop. on-goto works the same. a = 3 ON a GOTO 1, 2, 3 1 PRINT "hi" END 2 PRINT "hello" END 3 PRINT "whatever" END It would goto 3 because a = 3 and I put end in there because if a = 1 then it would go to line 1 but since goto doesn't return it, would go to line 2 and 3 afterward. ______________________________________________________________________________ Now it's even harder, but still not too bad Select case here's how it works: a = 3 SELECT CASE a CASE 1 PRINT "hi" CASE 2 TO 3 PRINT "hello" CASE 4 PRINT "how are you" CASE IS => 5 PRINT "whatever" END SELECT so it would check and see if a was 1 for case 1, 2 through 3 for case 2 to 3, and if a is bigger or equal to 5 it would go to case => 5, or you could have > 5 or = 5 or >< 5 to say bigger than 5, or equal to 5, or different than 5. ______________________________________________________________________________ INKEY$ I wasn't going to explain this, but since I used it in a few examples today I thought you might want to know how it worked. ex. b$ = INKEY$ IF b$ = CHR$(27) THEN END IF b$ = CHR$(13) THEN PRINT "enter key" So you use chr$(number) for any ascii number, or you could use it like this. b$ = INKEY$ IF b$ = "a" THEN PRINT "a" Also if you don't know what the ascii numbers are, or what they mean just type in this program to tell you ALMOST every ascii number. If you still can't find a certain keys number then email me, and I will tell it to you. There is also an ascii chart in qbasic's help section, but it's kind of hard to understand. 1 PRINT INKEY$ GOTO 1 so all you would have to do is press a key and it would print it's number. ______________________________________________________________________________ Yes, I know it's tons of loops for you to remember, but most people get farmiliar with just their favorites, because they all work okay. Plus it may be awhile before I do any more chapters so you'll have plenty of time to learn how to use them. Don't understand this? email me my Email: speige@hotmail.com my URL: http://www.geocities.com/timessquare/Labyrinth/2690