I'd like to know how to use one input line to generate a single outcome based on a pre-assigned section of data. An example - using days, weeks, months D$(X) and dollars D(X).
=== PRESET VALUES ===
10 AA$ = “MORNING” : BB$ = “DAY” : CC$ = “NIGHT”: AC = 1000
=== INPUT LINE ===
20 INPUT “WHICH TIMEFRAME >”;TF$
30 IF TF$=1 THEN GOSUB 100 : GOTO 500
40 IF TF$=2 THEN GOSUB 200 : GOTO 500
50 IF TF$=3 THEN GOSUB 300 : GOTO 500
=== GET VARIABLES ===
(the same variable is assigned a name and a matching numeric value regardless of source list. The variable LS designates which source list the variables come from.)
100 LS = 1 : D$(1) = ”MON” : D(1) = 20 : D$(2) = ”TUE” : D(2) = 30 : D$(3) = “WED” : D(3) = 30 : RETURN
200 LS = 2 : D$(1) = “WK1” : D(1) = 100 : D$(2) = ”WK2” : D(2) = 110 : D$(3) = “WK3” : W(3) = 130 : RETURN
300 LS = 3 : D$(1) = “JAN” : D(1) = 500 : D$(2) = “FEB” : D(2) = 600 : D$(3) = “MAR” : D(3) =700 : RETURN
=== DISPLAY VARIABLES ===
500 PRINT “1) ”; D$(1) : VTAB 1 : HTAB 10 : ? D(1)
510 PRINT “2) ”; D$(2) : VTAB 2 : HTAB 10 : ? D(2)
520 PRINT “3) ”; D$(3) : VTAB 3 : HTAB 10 : ? D(3)
=== INPUT CHOICE ===
(regardless of the assigned name and matching variable I use the same input line. Well, that's what I'm hoping to achieve)
600 PRINT “CHOOSE WHICH >” : GET ZZ
My actual count is 3 lists of 11 variables per list. I can solve my problem with a ridiculous number of IF THEN statements.
IF ZZ = 1 AND LS = 1 THEN AC = AC – D(1) : AA$ = D$(1)
IF ZZ = 2 AND LS = 1 THEN AC = AC – D(2) : AA$ = D$(2)
IF ZZ = 3 AND LS = 1 THEN AC = AC – D(3) : AA$ = D$(3)
IF ZZ = 1 AND LS = 2 THEN AC = AC – D(1) : BB$ = D$(1)
IF ZZ = 2 AND LS = 2 THEN AC = AC – D(2) : BB$ = D$(2)
and so on...
Is there a simple way to do this?
You might consider sticking to one forum (at a time) for posting a question.
http://www.vintage-computer.com/vcforum/showthread.php?44230-BASIC-Process-multiple-variables-with-one-input-line
@ David
Sure, no problem. Didn't mean to spam up different sites, but was wondering if I would get different solutions from different sites. Just putting it out there... I'll stay more concise from now on.
A big thanks to all replies and the useful information.
I think we could use a better description of what you are trying to achieve. Tell us the whole story. Showing us the code that does not work without that description is not all that informative.
Just 'wild' guessing though, have you considered putting all the possible responses in several 2-diemtional matrices, or even a single 3-d matrix?
Hiya. Yes, thanks. When I get it sorted I'll post what I have. It'll be maybe 20 or 30 lines though. As I'm new here I didn't want to post a large portion of code and expect others to sort it out for me.
However, I have a related question.
How can I get a batch of numeric variables to all adjust by the same number?
For example (this doesn't work, but I think you'll see what I'm trying to achieve):
10 P(1)=10 : P(2)=20: P(3)=30: P(4)=40: P(5)=50
20 INPUT Z
30 FOR A = 1 TO 5 : P(A) = P(A) - Z : NEXT
40 ?P(1) : ?P(2) : ?P(3) : ?P(4) : ?P(5)
Obviously my results are 10,20,30,40,50. How can I make a sequence of variables all adjust by the same number (IE: line 20)?
What would you expect the values to be for input 5? I expect 5, 15, 25, 35, and 45 - and that's what I get with your code.
When I run your code on an Apple IIe I get:
5
15
25
35
45
I'm not sure what your problem is.
Also, to your comment that you are going to supply us with 30 lines of code regarding your first question. No, that's not what I mean. I mean, give us a written explanation of the specific problem you want to solve.
Edit: Looks like David beat me to the punch.
Okay. The second issue. I have a set of pre-assigned variables. They have no relevance to each other, 60, 110, 250, 425. Or something like that. In the example I posted I used increments of ten to keep things simple.
Let's say I have a group of numbers P1=10, P2=20, P3=30, P4=40, P5=50. I want them to be adjusted by two numbers both of which are variable, ZZ and PS. ZZ and PS are affected by user input. As part of a game when the user performs actions ZZ and PS change independently. In other words when the user does one thing ZZ changes. When they do another PS changes. P1 to P11 then need to be adjusted by the figure obtained by dividing ZZ by PS.
To get the variable adjustment I use A= INT (ZZ/PS).
I am stuck as to what to do next. All the P1 to P11 variables need to be adjusted by A. Is there a way to do this without individually programming:
P1 = P1-A : P2 = P2-A : P3 = P3-A and so on.
I apologise if I am not accurately conveying my programming issues, but I do appreciate your comments.
If you could provide an example of a solution that would be of much assistance rather than just say use a FOR/NEXT loop or a DATA statement.
Thanks.
If they're individual variable names, then no, there's no way to adjust them all without programming each one. if the P variables were actually an array, though, you could do them in a loop:
for i = 1 to 11:P(i)=P(i)-A:next i
Here is another take on it. This sample uses an array as David suggested and also uses DATA and READ to set up the initial values in the array.
9 REM
10 REM READ INITIAL VALUES - DATA IN LINE 130
11 REM
20 FOR I = 0 TO 10:READ V(I):NEXT I
30 PRINT"VALUES BEFORE CHANGES:"
40 FOR i=0 TO 10:PRINT" ";V(I):NEXT I:PRINT
44 REM
45 REM SUBTRACT ENTERED VALUE ZZ
46 REM
50 INPUT "ENTER SUBTRACT VALUE ";ZZ
60 FOR I= 0 TO 10:V(I)=V(I)-ZZ:NEXT I
70 PRINT"VALUES AFTER SUBTRACTION:"
80 FOR i=0 TO 10:PRINT" ";V(I):NEXT I:PRINT
84 REM
85 REM ADD ENTERED VALUE YY
86 REM
90 INPUT "ENTER ADD VALUE ";YY
100 FOR I= 0 TO 10:V(I)=V(I)+YY:NEXT I
110 PRINT"VALUES AFTER ADDING:"
120 FOR I=0 TO 10:PRINT" ";V(I):NEXT I:PRINT
124 REM
125 REM INITIAL VALUES
126 REM
130 DATA 34,45,123,61,22,33,87,90,41,4,57
Thanks for those comments. I can see applications for both solutions. Especially in regard to keeping file size down with lots of lines of programming.
I'm pretty sure your advice is going to solve my initial query as well... which I created a screenshot for. Now, let me see if I can attach it.
[inline:attached_image_#]
Right, that didn't work. How about...
http://www.applefritter.com/content/rockbadger-weapons-capture
The problem was having multiple lists like this. In this list weapon1 is P1$. In the shields list shield 1 is also P1$. and so on through 11 different weapons, shields or armour.
Using your coding will work for lines 2200-2300, right?
Exactly. Your PE index serves as the index for what's bought, as well as how much it costs (which will have to be a new array that holds the cost of each weapon).