- Joined
- Oct 30, 2018
- Messages
- 677
Ακολουθεί edit με το listing, αφού το έγραψα μη βγάλει άλλος τα μάτια του με την εικόνα
Τα listings σαν κείμενο είναι στους συνδέσμους με τα ονοματα .bas στην σελίδα.
Wow! It seems you have yet to create an account with us! Needless to say, you have to register in order to get the full "iamretro" experience! You will then be able to create your own topics, reply to posts and be an active member of the MOST prolific community in Greece (even further than that, but we're being modest for now). So don't delay! REGISTER!
Ακολουθεί edit με το listing, αφού το έγραψα μη βγάλει άλλος τα μάτια του με την εικόνα
Δεν μπορώ πλέον να διαβάσω τίποτα χωρίς indentation και coding conventions
Το Basic Computer Games είναι ένα βιβλίο του 1978 με πολλά listings.
Τι λέτε για βελάκια; BullsEye
edit: η γραμμή 190 θα έπρεπε να είναιCode:190 ON T GOTO 200, 210, 220
View attachment 19703
100 REM -----------------------------
110 REM BULLSEYE FOR ATARI 800
120 REM SLY*M 3/5/2020
130 REM CHANGE PTS FOR WINNING POINTS
140 REM -----------------------------
150 POKE 82,0:PTS=200:? "} BULLSEYE"
160 ? " CREATIVE COMPUTING "
170 ? " MORRISTOWN, NEW JERSEY "
180 ?
190 ? " IN THIS GAME, UP TO 20 PLAYERS THROW "
200 ? " DARTS AT A TARGET WITH 10, 20, 30, AND"
210 ? "40 POINT ZONES. THE OBJECTIVE IS TO GET"
220 ? " ";PTS;" POINTS.":?
230 ? "THROW 1-3,DESCRIPTION:PROBABLE SCORE"
240 ? "1 FAST OVERARM:BULSEYE OR COMPLETE MISS"
250 ? "2 CONTROLLED OVERARM:10,20 OR 30 POINTS"
260 ? "3 UNDERARM:ANYTHING":?
270 DIM N$(6),TMP$(6),A$(120),T$(1),S(20),W(20):M=0:R=0
280 FOR I=1 TO 20:S(I)=0:W(I)=0:NEXT I
290 ? "HOW MANY PLAYERS";:INPUT N$:IF N$="" THEN N$="0"
300 N=VAL(N$):IF N<1 OR N>20 THEN ? "1 TO 20":GOTO 290
310 FOR I=1 TO N:GOSUB 550:NEXT I:?
320 R=R+1:? "---------":? " ROUND";R:? "---------"
330 FOR I=1 TO N:ST=(I-1)*6
340 ? A$(ST+1,ST+6);"'S THROW";:INPUT T$:IF T$="" THEN T$="0"
350 T=VAL(T$):IF T<1 OR T>3 THEN ? "INPUT 1, 2, OR 3!":GOTO 340
360 ON T GOTO 370,380,390
370 P1=0.65:P2=0.55:P3=0.5:P4=0.5:GOTO 400
380 P1=0.99:P2=0.77:P3=0.43:P4=0.01:GOTO 400
390 P1=0.95:P2=0.75:P3=0.45:P4=0.05
400 U=RND(RND(0)*100)
410 IF U>=P1 THEN ? "BULLSEYE! 40 POINTS! ";:B=40:GOTO 460
420 IF U>=P2 THEN ? "30-POINT ZONE! ";:B=30:GOTO 460
430 IF U>=P3 THEN ? "20-POINT ZONE ";:B=20:GOTO 460
440 IF U>=P4 THEN ? "WHEW! 10 POINTS. ";:B=10:GOTO 460
450 ? "... MISSED! TOO BAD. ";:B=0
460 S(I)=S(I)+B:? "TOTAL SCORE =";S(I):? :NEXT I
470 FOR I=1 TO N:IF S(I)>=PTS THEN M=M+1:W(M)=I
480 NEXT I:IF M=0 THEN FOR I=1 TO 200:NEXT I:GOSUB 580:GOTO 320
490 FOR I=1 TO 200:NEXT I
500 ? :? "*** WE HAVE A WINNER! ***":? "-------------------------"
510 FOR I=1 TO M:? A$((W(I)-1)*6+1,(W(I)-1)*6+6);" SCORED ";S(W(I));" POINTS.":NEXT I
520 ? "-------------------------":GOSUB 580
530 IF N<20 THEN FOR I=N TO 19:? :NEXT I
540 ? " THANKS FOR THE GAME!";:? " [return]";:INPUT T$:POKE 82,2:END
550 REM --- PLAYER NAMES ---
560 ? "NAME OF PLAYER #";I;:INPUT N$:IF N$="" THEN N$="PL-":N$(4,6)=STR$(I)
570 TMP$=" ":TMP$(6-LEN(N$)+1,6)=N$:A$((I-1)*6+1)=TMP$:RETURN
580 REM --- PRINT SCORE TABLE ---
590 X=1:FOR I=1 TO N:IF I=W(X) THEN X=X+1:GOTO 620
600 TMP$=" ":N$=STR$(S(I)):TMP$(3-LEN(N$)+1,3)=N$
610 ? A$((I-1)*6+1,(I-1)*6+6);" SCORED ";TMP$;" POINTS."
620 NEXT I:RETURN
To challenge μέρος ναι, το quarantine καθόλουΑαααχ, πόσο μου έλειψε αυτό το topic...![]()
Εμένα πάλι μου έλλειψε το quarantine κομμάτι.To challenge μέρος ναι, το quarantine καθόλου![]()
Ααααχ, πόσο μου έλειψε αυτό το topic...![]()
Μόνο BASIC; Γιατί όχι C αν υπάρχει κάποιος compiler; Φυσικά όποιος θέλει μπορεί να το γράψει σε οποιαδήποτε γλώσσα προγραμματισμού.
Υπολογισμός ψηφίων π. Εδώ για τον ZX81, το listing είναι από τον πρωτότυπο κώδικα.
edit: Εδώ είναι τα πρώτα 1000 ψηφία του π για έλεγχο.
Code:#include <stdio.h> int main() { int r[2800 + 1]; int i, k; int b, d; int c = 0; for (i = 0; i < 2800; i++) { r[i] = 2000; } for (k = 2800; k > 0; k -= 14) { d = 0; i = k; for (;;) { d += r[i] * 10000; b = 2 * i - 1; r[i] = d % b; d /= b; i--; if (i == 0) break; d *= i; } printf("%.4d", c + d / 10000); c = d % 10000; } return 0; }
O Lion δεν έχει C αλλά ορίστε σε Lion java, κάνει 19.5 δεύτερα
View attachment 19649
Java:import net.mikekohn.java_grinder.Lionsys; public class pi { static int r[]= new int [2801]; static int i,x,y,k,offset,t1,t2; static long b,d,c,rr,t; static String s="0000"; static void main() { t1=Lionsys.timer(); c=0; x=1; y=3; t=0; Lionsys.cls(); for (i = 0; i < 2800; i++) { r[i] = 2000; } for (k = 2800; k > 0; k -= 14) { d = 0; i = k; for (;i!=0;) { rr=(long) r[i]; d += rr * 10000L; b = 2L * (long) i - 1L; r[i] =(int) (d % b); d = d/b; i--; if (i!=0) d = d*i; } rr=c+d/10000L; if (rr<10L) offset=3; else if (rr<100L) offset=2; else if (rr<1000L)offset=1; else offset=0; Lionsys.print_str(y,x,s); Lionsys.print_long(y,x+offset,rr); if (x>70) {x=1; y=y+1;} else x+=4; if (y>20) {Lionsys.scroll_up(); y--; } c = d % 10000L; t2=Lionsys.abs(Lionsys.timer()-t1); t1=Lionsys.timer(); t=t+t2; } Lionsys.print_float(y+2,1,(float) t/1000); return ; } }
#include <stdio.h>
int *r;
timer() {
#asm
MOVI A0,0
MOVI A1,0
IN A0,21
SWAP.D A0
IN A1,20
OR.D A1,A0
#endasm
}
void main()
{
int i, k, b, d, c, t;
t=timer();
printf("\n");
r=calloc(2801,4);
for (i = 0; i < 2800; i++)
{
r[i] = 2000;
}
c = 0;
for (k = 2800; k > 0; k -= 14)
{
d = 0;
i = k;
for (;;)
{
d += r[i] * 10000;
b = 2 * i - 1;
r[i] = d % b;
d /= b;
i--;
if (i == 0) break;
d *= i;
}
printf("%.4d", c + d / 10000);
c = d % 10000;
}
printf("\n\n%.8d sec\n\n",(timer()-t+1000)/1000);
}