Código fuente Basic "Paisajes Extraterrestres" Amstrad User n2

Cualquier tema relacionado con la serie Amstrad CPC que no esté englobado en otra categoría.
adrdesign
Lechoncillo
Lechoncillo
Mensajes: 14
Registrado: Mar 24 Mar , 2015 8:30 am

Re: Código fuente Basic "Paisajes Extraterrestres" Amstrad User n2

Mensajepor adrdesign » Vie 21 Sep , 2018 1:50 am

Me alegro que os haya molado tanto como a mí hacerlo :D
Imagen
He conseguido llegar al nivel 7 de recursividad cambiando la linea 20 y 40 a

Código: Seleccionar todo

20 DIM d(128,64):zzz=TIME:RANDOMIZE zzz
40 MODE 2
El CPCAlive permite color en modos de alta resolución.

Cambiando el valor de zs en la línea 660 se cambia la altura del terreno. Molaría que a partir de una altura dibujara tambien "nieve", que podría ser en tinta 1. No tengo tanta capacidad para saber cómo hacerlo, ¿os atrevéis?
Adjuntos
paisajes.png

adrdesign
Lechoncillo
Lechoncillo
Mensajes: 14
Registrado: Mar 24 Mar , 2015 8:30 am

Re: Código fuente Basic "Paisajes Extraterrestres" Amstrad User n2

Mensajepor adrdesign » Dom 24 Abr , 2022 1:41 pm

Acabo de encontrar lo que probablemente sería el listado original en Apple II, generaba el código para poder hacer el paisaje luego mediante un plotter.

Código: Seleccionar todo

0 REM ! INTEGER DS,N,MX,BX,BY
1 REM ! INTEGER D(128,64)
5 PRINT "1) BLUE 2) GREEN 3) RED 4) BLACK"
6 PRINT "ENTER WATER,GROUND COLOURS ";: INPUT J1,J2
10 REM FRACTALS
20 DIM D(128,64)
30 INPUT "NUMBER OF LEVELS ";LE
40 DS = 2: FOR N = 1 TO LE:DS = DS +2 ^(N -1): NEXT
50 MX = DS -1:MY = MX/2:PI = 3.1416:RH = PI *30/180:VT = RH *1.2
60 FOR N = 1 TO LE:L = 10000/1.8 ^N
70 PRINT "WORKING ON LEVEL ";N
80 IB = MX/2 ^N:SK = IB *2
90 GOSUB 150: REM ASSIGN HEIGHTS ALONG X IN ARRAY
95 PRINT N
100 GOSUB 220: REM ASSIGN HEIGHTS ALONG Y IN ARRAY
105 PRINT N
110 GOSUB 290: REM ASSIGN HEIGHTS ALONG DIAG. IN ARRAY
115 PRINT "--> ";N
120 NEXT N
130 GOTO 640: REM **DRAW**
140 REM * HEIGHTS ALONG X *
150 FOR YE = 0 TO MX -1 STEP SK
160 FOR XE = IB +YE TO MX STEP SK
170 AX = XE -IB:AY = YE: GOSUB 370:D1 = D:AX = XE +IB: GOSUB 370:D2 = D
180 D = (D1 +D2)/2 + RND(1) *L/2 -L/4:AX = XE:AY = YE: GOSUB 420
190 NEXT
200 NEXT : RETURN
210 REM * HEIGHTS ALONG Y *
220 FOR XE = MX TO 1 STEP -SK
230 FOR YE = IB TO XE STEP SK
240 AX = XE:AY = YE +IB: GOSUB 370:D1 = D:AY = YE -IB: GOSUB 370:D2 = D
250 D = (D1 +D2)/2 + RND(1) *L/2 -L/4:AX = XE:AY = YE: GOSUB 420
260 NEXT
270 NEXT : RETURN
280 REM HEIGHTS ALONG DIAG. *
290 FOR XE = 0 TO MX -1 STEP SK
300 FOR YE = IB TO MX -XE STEP SK
310 AX = XE +YE -IB:AY = YE -IB: GOSUB 370:D1 = D
320 AX = XE +YE +IB:AY = YE +IB: GOSUB 370:D2 = D
330 AX = XE +YE:AY = YE:D = (D1 +D2)/2 + RND(1) *L/2 -L/4: GOSUB 420
340 NEXT
350 NEXT : RETURN
360 REM * RETURN DATA FROM ARRAY *
370 IF AY >MY THEN 390
380 BY = AY:BX = AX: GOTO 400
390 BY = MX +1 -AY:BX = MX -AX
400 D = D(BX,BY): RETURN
410 REM * PUT DATA INTO ARRAY *
420 IF AY >MY THEN 440
430 BY = AY:BX = AX: GOTO 450
440 BY = MX +1 -AY:BX = MX -AX
450 D(BX,BY) = INT(D): RETURN
460 REM * PUT IN SEA LEVEL HERE *
470 IF XO < > -999 THEN 500
480 IF ZZ <0 THEN GOSUB 1070:Z2 = ZZ:ZZ = 0: GOTO 620
490 GOSUB 1090: GOTO 610
500 IF Z2 >0 AND ZZ >0 THEN 610
510 IF Z2 <0 AND ZZ <0 THEN Z2 = ZZ:ZZ = 0: GOTO 620
520 W3 = ZZ/(ZZ -Z2):X3 = (X2 -XX) *W3 +XX:Y3 = (Y2 -YY) *W3 +YY:Z3 = 0
530 ZT = ZZ:YT = YY:XT = XX
540 IF ZZ >0 THEN 590
550 REM * GOING INTO WATER *
560 ZZ = Z3:YY = Y3:XX = X3: GOSUB 950
570 GOSUB 1070:ZZ = 0:YY = YT:XX = XT:Z2 = ZT: GOTO 620
580 REM * COMING UP OUT OF WATER *
590 ZZ = Z3:YY = Y3:XX = X3: GOSUB 950
600 GOSUB 1090:ZZ = ZT:YY = YT:XX = XT
610 Z2 = ZZ
620 X2 = XX:Y2 = YY: RETURN
630 REM * DISPLAY HERE *
640 GOSUB 1110: REM SET UP PLOTTING DEVICE OR SCREEN *
650 XS = .04:YS = .04:ZS = .04: REM *SCALING FACTORS *
660 FOR AX = 0 TO MX:XO = -999: FOR AY = 0 TO AX
670 GOSUB 370:ZZ = D:YY = AY/MX *10000:XX = AX/MX *10000 -YY/2
680 GOSUB 940: NEXT : NEXT
690 FOR AY = 0 TO MX:XO = -999: FOR AX = AY TO MX
700 GOSUB 370:ZZ = D:YY = AY/MX *10000:XX = AX/MX *10000 -YY/2
710 GOSUB 940: NEXT : NEXT
720 FOR EX = 0 TO MX:XO = -999: FOR EY = 0 TO MX -EX
730 AX = EX +EY:AY = EY: GOSUB 370:ZZ = D:YY = AY/MX *10000
740 XX = AX/MX *10000 -YY/2: GOSUB 940: NEXT : NEXT
750 GOTO 1130: REM *DONE PLOTTING, FINISH *
760 REM *ROTATE*
770 IF XX < >0 THEN 800
780 IF YY < = 0 THEN RA = -PI/2: GOTO 820
790 RA = PI/2: GOTO 820
800 RA = ATN(YY/XX)
810 IF XX <0 THEN RA = RA +PI
820 R1 = RA +RH:RD = SQR(XX *XX +YY *YY)
830 XX = RD * COS(R1):YY = RD * SIN(R1)
840 RETURN
850 REM * TILT DOWN *
860 RD = SQR(ZZ *ZZ +XX *XX)
870 IF XX = 0 THEN RA = PI/2: GOTO 900
880 RA = ATN(ZZ/XX)
890 IF XX <0 THEN RA = RA +PI
900 R1 = RA -VT
910 XX = RD * COS(R1) +XX:ZZ = RD * SIN(R1)
920 RETURN
930 REM * MOVE (OR PLOT) TO XP,YP *
940 GOSUB 470
950 XX = XX *XS:YY = YY *YS:ZZ = ZZ *ZS
960 GOSUB 770: REM *ROTATE *
970 GOSUB 860: REM *TILT UP *
980 IF XO = -999 THEN PR$ = "M"
985 IF XO < > -999 THEN PR$ = "D"
990 XP = INT(YY) +CX:YP = INT(ZZ)
1000 GOSUB 1030
1010 RETURN
1020 REM *PLOT LINE HERE *
1030 XP = XP *.625:YP = 33.14 -.663 *YP
1040 IF PR$ = "M" THEN X8 = XP:Y8 = YP:XO = X
1045 IF Y8 >179 OR Y8 <0 OR YP >179 OR YP <0 THEN RETURN
1050 PRINT "M";Y8 *2.5;",";X8 *2.5: PRINT "D";YP *2.5;",";XP *2.5:X8 = XP:Y8 = YP: RETURN
1060 REM * SWITCH TO SEA COLOR *
1070 PRINT "C";J1: RETURN
1080 REM * SWITCH TO LAND COLOR *
1090 PRINT "C";J2: RETURN
1100 REM SETUP SCREEN *
1110 PRINT CHR$(4);"PR#1": PRINT CHR$(18): PRINT "I": PRINT "M0,-700": PRINT "I": RETURN
1120 REM *END LOOP*
1130 PRINT "H": PRINT "A": PRINT CHR$(4);"PR#0"
Está en este disco https://archive.org/details/a2_Astro_Calc_v5.5_19xx_


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic