speed up screen updates

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
This commit is contained in:
Jeff Epler 2016-06-18 16:41:28 -05:00
parent 4e6807c2d7
commit fd06ebf375

58
game.md
View file

@ -6,7 +6,7 @@
- B(): Base price of property - B(): Base price of property
- P(): Base production of property - P(): Base production of property
- C: Cash on hand - C: Cash on hand
- Q: Quantity to purchase - D: Quantity of cash to turn a line blue
- R: Selected row - R: Selected row
- M: Max row to display - M: Max row to display
@ -49,12 +49,13 @@ jiffy)
~~~~ ~~~~
1000 gosub 20000 1000 gosub 20000
1010 gosub 21000 1010 gosub 21000
1020 ift<tithengosub22000:t=t+60:goto1020 1020 ift<tithengosub22000:gosub20500:t=t+60:goto1020
1030 getc$:ifc$=""then1000 1030 ifc>=dgoto1000
1040 ifc$="j"andr<mthenr=r+1 1040 getc$:ifc$=""then1020
1040 ifc$="k"andr>0thenr=r-1 1050 ifc$="j"andr<mthengosub21500:r=r+1:gosub21000
1050 ifc$="b"thengosub23000 1060 ifc$="k"andr>0thengosub21500:r=r-1:gosub21000
1060 goto1030 1070 ifc$="b"thengosub23000
1080 goto1020
~~~~ ~~~~
## Utility functions ## Utility functions
@ -70,26 +71,47 @@ jiffy)
In principle, 10100 is an entry point for printing a string but I never used it. In principle, 10100 is an entry point for printing a string but I never used it.
### Print the main game screen ### Print the main game screen
Another entry point at 20500 just updates balances
~~~~ ~~~~
20000 print "{home}vic20 incremental game":print" accessory":print" price","production":print 20000 print "{home}vic20 incremental game":print" accessory":print" price","production":print
20010 fori=1tom:printn%(i);"{left} ";a$(i);"{blu}" 20005 d=1e30
20020 j=fn pr(n%(i))*b(i):ifj<cthenprint"{rvon}"; 20010 fori=1tom:gosub20800:next
20030 gosub10000:print"{rvof}"; 20500 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}";
20040 j=p(i)*n%(i):gosub10000:print:next 20520 print"income";:gosub24000:gosub10000:print
20050 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"; 20530 print"cash";:j=c:gosub10000:print
20060 print"income";:gosub24000:gosub10000:print 20540 print"k=up j=down b=buy";
20070 print"cash";:j=c:gosub10000:print 20550 return
20080 print"k=up j=down b=buy"; ~~~~
20090 return
### Print property type 'i'
.. assuming the correct location if entering at 20800, moving to location if entering at 20700
~~~~
20700 print"{home}{down}{down}{down}";
20710 forii=1toi:print"{down}{down}";:next
20800 printn%(i);"{left} ";a$(i);"{blu}"
20810 j=fn pr(n%(i))*b(i):ifj<=cthenprint"{rvon}";
20820 ifj>candj<dthend=j
20830 gosub10000:print"{rvof}";
20840 j=p(i)*n%(i):gosub10000:print
20850 return
~~~~ ~~~~
### Print the selection mark ### Print the selection mark
~~~~ ~~~~
21000 print"{home}{down}{down}{down}"; 21000 print"{home}{down}{down}{down}";
21010 fori=1tor:print"{down}{down}";:next 21010 fori=1tor:print"{down}{down}";:next
21020 print">" 21020 print">";tab(20);"<";
21030 return
~~~~ ~~~~
### Print the selection mark
~~~~
21500 print"{home}{down}{down}{down}";
21510 fori=1tor:print"{down}{down}";:next
21520 print" ";tab(20);" ";
21030 return
~~~~
### A second has passed, update things ### A second has passed, update things
~~~~ ~~~~
22000 gosub24000:c=c+j 22000 gosub24000:c=c+j
@ -101,7 +123,7 @@ In principle, 10100 is an entry point for printing a string but I never used it.
23000 ifc<fnpr(n%(r))*b(r)thenreturn 23000 ifc<fnpr(n%(r))*b(r)thenreturn
23010 n%(r)=n%(r)+1:c=c-fnpr(n%(r))*b(r) 23010 n%(r)=n%(r)+1:c=c-fnpr(n%(r))*b(r)
23020 ifr=mandm<xthenm=r+1 23020 ifr=mandm<xthenm=r+1
23030 return 23030 i=r:goto20700
~~~~ ~~~~
### Calculate total income in j ### Calculate total income in j