084
17.12.2024, 20:50 Uhr
Dresdenboy
|
Ihr seid alle so fleißig!
Ich habe auch mal etwas weitergearbeitet. Es wird sich jetzt auch wieder mehr Zeit finden. Die Bildkonvertierung u. Lightmap für das Bumpmapping sind fertig. Aber ich wollte schon für das Plasma einen Farbverlaufsgenerator im Textmodus haben. Ziel ist, aus einem berechneten RGB-Verlauf (Beispiele für so etwas hier: http://www.sizecoding.org/wiki/Byte_Battle#Palettes - wo 16 Farben mit 8-bit RGB-Anteilen definiert werden) dann die entspr. Zeichen- und Farbcodes zu erzeugen. Ein erster Stand in Python für Graustufen auf dem BIC:
Quellcode: | print("5 SCREEN 0") cols = [(0,0), (8, 80), (7, 160), (15, 240)] # Vordergrundfarben (schwarz, grau, weiß) bcols = [(0,0), (7, 160)] # Hintergrundfarben (schwarz, grau) # Tupel als (ASCII code, Schattierung) für Zeichen von 0 bis 100% Füllung shade = [(255, 0.0), (176, 0.35), (177, 0.5), (178, 0.8), (219, 1.0)] line = 10 # Zähler für Zeilenausgabe for intensity in range(0,256,16): # Graustufen bis 255 in 16er Intensitätsschritten d=1000.0;i=0;b=0;s=1.0;c=0 # Initialwerte für gefundene Kombination for asc, sh in shade: # Schattierungskombinationen durchlaufen for idx, lum in cols: # Farben mit Index in Palette u. Helligkeit for bidx, blum in bcols: # + Hintergrundfarben td = abs((lum*sh+blum*(1.0-sh))-intensity) # Berechnung Farbabstand zu bisher gefundener if td<d and (asc>178 or abs(lum-blum)<100): # ist Farbe näher dran und als Mischfarbe nicht zu krass d=td;i=idx;b=bidx;s=sh;c=asc print(f"{line} COLOR {i},{b}:PRINT CHR$({c});") # Ausgabe BASIC-Zeile line=line+10 # Zeilenzähler |
Das sollte diesen Code erzeugen:
Quellcode: | 5 SCREEN 0 10 COLOR 0,0:PRINT CHR$(255); 20 COLOR 8,0:PRINT CHR$(176); 30 COLOR 8,0:PRINT CHR$(176); 40 COLOR 8,0:PRINT CHR$(177); 50 COLOR 8,0:PRINT CHR$(178); 60 COLOR 8,0:PRINT CHR$(219); 70 COLOR 8,7:PRINT CHR$(178); 80 COLOR 8,7:PRINT CHR$(177); 90 COLOR 8,7:PRINT CHR$(176); 100 COLOR 8,7:PRINT CHR$(176); 110 COLOR 0,7:PRINT CHR$(255); 120 COLOR 15,7:PRINT CHR$(176); 130 COLOR 15,7:PRINT CHR$(176); 140 COLOR 15,7:PRINT CHR$(177); 150 COLOR 15,7:PRINT CHR$(178); 160 COLOR 15,0:PRINT CHR$(219);
|
Ergebnis:
Nächstes Ziel: Volle RGB-Farben. Die RGBI-Anteile kenne ich. Das sollte sich leicht generieren lassen.
VG, Matthias -- ___________________________________ Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ... Dieser Beitrag wurde am 18.12.2024 um 10:05 Uhr von Dresdenboy editiert. |