Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Printtausta väriefekteillä

Grey [28.04.2007 15:20:48]

#

Yksinkertaisesti sanoen aliohjelma, jolla voi tulostaa tekstiä muutamalla erilaisella väriefektillä. Pääasiassa liukuja ja muita perusefektejä. Koodiakaan ei ole tapani mukaan kommentoitu, mutta sen ymmärtämisen ja muokkaamisen pitäisi olla helppoa.

Koodi on tosin melko optimoimatonta, sillä päätin jättää sen ja kaiken muun hienosäädön sellaiselle, joka tätä tarvitsee tai tahtoo tällä leikkiä. Viidessä minuutissa tehty, ja toimivana, mutta itselleen turhana tänne laitettu. Pätevän koodin haaskausta olisi ollut jättää tämä kiintolevylle lojumaan. Nauttikaa siis. Niin minäkin tein säätäessäni joukon ylimääräisiä efektejä, kun oli liiankin helppoa :-P

-Grey-

DECLARE SUB PRINTC (X AS INTEGER, Y AS INTEGER, S AS STRING, T AS INTEGER, C AS INTEGER)

DIM I AS INTEGER, T AS STRING
CLS : RANDOMIZE TIMER: SCREEN 13: COLOR 31

FOR I = 1 TO 32
 OUT &H3C8, I
 OUT &H3C9, I / 2
 OUT &H3C9, I
 OUT &H3C9, I * 2
NEXT

T = "0123456789ABCDEF1337"
FOR I = 1 TO 19
  PRINTC 1, I, T, I - 1, 16
  LOCATE I, 21: PRINT T;
NEXT

END

SUB PRINTC (X AS INTEGER, Y AS INTEGER, S AS STRING, T AS INTEGER, C AS INTEGER)
DIM X2 AS INTEGER, Y2 AS INTEGER, I AS INTEGER
DIM C2 AS INTEGER, C3 AS INTEGER

IF LEN(S) = 0 THEN EXIT SUB
FOR I = 1 TO LEN(S)
 IF I + X > 41 THEN EXIT FOR
 LOCATE Y, X + I - 1: PRINT MID$(S, I, 1);
NEXT

FOR X2 = (X * 8 - 8) TO (X * 8 + LEN(S) * 8 - 9)
 FOR Y2 = (Y * 8 - 8) TO (Y * 8 + 8 - 9)
 C2 = POINT(X2, Y2): C3 = C3 + 1
SELECT CASE T
CASE 0: IF C2 = 0 THEN PSET (X2, Y2), C
CASE 1: IF C2 = 0 THEN PSET (X2, Y2), C + C3
CASE 2: IF C2 = 0 THEN PSET (X2, Y2), C + 8 - C3
CASE 3: IF C2 > 0 THEN PSET (X2, Y2), C + C3
CASE 4: IF C2 > 0 THEN PSET (X2, Y2), C + 8 - C3
CASE 5
 IF C2 = 0 THEN PSET (X2, Y2), C + C3
 IF C2 > 0 THEN PSET (X2, Y2), C + 8 - C3
CASE 6
 IF C2 = 0 THEN PSET (X2, Y2), C + 8 - C3
 IF C2 > 0 THEN PSET (X2, Y2), C + C3
CASE 7: IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 8)
CASE 8: IF C2 > 0 THEN PSET (X2, Y2), C + INT(RND * 8)
CASE 9
 IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
 IF C2 > 0 THEN PSET (X2, Y2), C + INT(RND * 3)
CASE 10
 IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 3)
 IF C2 > 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
CASE 11
 IF C2 = 0 THEN PSET (X2, Y2), C + C3
 IF C2 > 0 THEN PSET (X2, Y2), 0
CASE 12
 IF C2 = 0 THEN PSET (X2, Y2), C + 8 - C3
 IF C2 > 0 THEN PSET (X2, Y2), 0
CASE 13
 IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 8)
 IF C2 > 0 THEN PSET (X2, Y2), 0
CASE 14
 IF C2 = 0 THEN PSET (X2, Y2), C + C3
 IF C2 > 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
CASE 15
 IF C2 = 0 THEN PSET (X2, Y2), C + 8 - C3
 IF C2 > 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
CASE 16
 IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
 IF C2 > 0 THEN PSET (X2, Y2), C + 8 - C3
CASE 17
 IF C2 = 0 THEN PSET (X2, Y2), C + INT(RND * 4 + 4)
 IF C2 > 0 THEN PSET (X2, Y2), C + C3
CASE ELSE
 IF C2 = 0 THEN PSET (X2, Y2), 15
 IF C2 > 0 THEN PSET (X2, Y2), 0
END SELECT
 NEXT
C3 = 0
NEXT

END SUB

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta