Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Grafiikka-aliohjelmalle tarvetta (QB)

Sivun loppuun

Grey [26.02.2004 10:00:38]

#

Itse en ole onnistunut tälläistä onnistunut väsäämään, vaikka puoli vuotta onkin yritetty (aika, joka on muuten vähän liian pitkä junnata paikoillaan), niin pyydänpä tätä kautta seuraavanlaista grafiikka-aliohjelmaa..

Se on kuvanlataaja, joka lataa tietyn kokoisen (esim 192x192 pikseliä) kuvan taulukkoon ja pilkkoo sen halutun kokoisiksi tileiksi, joille annetaan ID, jolla haluttu tile piirretään näytölle haluttuun kohtaan. Aliohjelman tulee toimia SCREEN 7 ja olla siedettävän nopea. Selkeä koodaus on plussaa.

Lisäksi auttajan itsensä, tämän kotisivujen, softatalon tai muun tämmöisen mainostusta varten logo-aliohjelma, jossa nimi, maili ja kotisivut, että logo, jos on. Tyyli on vapaa, kunhan pysytään siinä 16 värissä ja 320x200 resossa.

Aliohjelman voi joko laittaa tänne, tuon logo-homman kanssa, taikka lähettää ne mailiini. Jos niitä tulee useampia, niin testaan ja valitsen sopivimman.

Niin että otan vastaan näitä aliohjelmia ja annan auttajalle ansaitun tunnustuksen..

Vaan missä käytän tuollaista aliohjelmaa ja miksi logo? Noh, olen ajatellut tehdä retro-tyylisen RPG-pelin ja siihen nuo. Ja ajatus _ei_ ole tullut RB:sta, vaan on muhinut mielessäni jo niin monta vuotta että "rauta" uhkaa jo jäähtyä. Kuitenkin, jään odottamaan ali-ohjelmia, että saisin projektini tämän vuoden aikana liikkeelle, enkä vasta viiden vuoden päästä, jolloinka on jo muut hommat mielessä. Tuhlatut ideat kun ovat vähintään stressaavia ja syövät pohjan uusilta ideoilta..

-Grey-

sqwiik [26.02.2004 11:52:11]

#

Odota, tutkin asiaa. Postaan uudelleen tämän illan (26.2.-04) aikana.

EDIT - miten piirto tapahtuu? Haluatko PUT:n ymmärtämän kuvamuodon, vai omatekoisen piirtofunktion?

Edit2 - ymmärsinkö nyt oikein, että tarvitset funktion, joka pilkkoo ladatun kuvan ns. tilesetiksi?

hunajavohveli [26.02.2004 14:17:49]

#

Ideana on siis, että taulukkoon on tallennettu kuvan jokainen pikseli, ja että tietyllä käskyllä saa esille haluamansa pikselin?

Tuollainen on itse asiassa varsin helppo tehdä. Sqwiik varmaan tekisi paremman, mutta tässä on oma versioni:

DECLARE SUB PiirraKuva ()
DECLARE SUB TallennaKuva ()
DECLARE SUB NaytaKuva ()
COMMON SHARED kuva()
SCREEN 7

DIM kuva(0 TO 40, 0 TO 40)   'Dimmataan taulukko kuvalle, pikseleit? 40*40

PiirraKuva
TallennaKuva
NaytaKuva

SUB NaytaKuva

DO

'Arvotaan pikseli

x = INT(RND * 41)
y = INT(RND * 41)

PSET (INT(x) + 140, INT(y) + 80), kuva(x, y)    'n?ytet??n arvottu pikseli

'Viive
WAIT &H3DA, 8

LOOP UNTIL INKEY$ <> ""

END SUB

SUB PiirraKuva

'Piirret??n kuva

FOR a = 0 TO 40 STEP 4
LINE (a, 0)-(a, 40), 2
NEXT a
LINE (0, 0)-(40, 40), 12
CIRCLE (20, 20), 10, 9
PAINT (20, 20), 1, 9
LINE (0, 40)-(40, 0), 11

END SUB

SUB TallennaKuva

FOR b = 0 TO 40
FOR a = 0 TO 40
kuva(a, b) = POINT(a, b)         'ladataan kuvan alkikoihin samoissa kohdissa
                                 'olevien pisteiden v?rit
NEXT a
NEXT b

CLS            'Tyhj?t??n n?ytt?

END SUB

En ole varma tarkoititko tuollaista, mutta noin ajattelin. Tuossa tosin on vain 40*40 eli jos haluat 192*192 niin sitten pitää soveltaa. Joutunet käyttämään DYNAAMISTA INTEGER-taulukkoa, koska muuten loppuu taulukkomuisti.

sqwiik [26.02.2004 19:00:57]

#

Tästälähin käytän qb näyttömoodi 7:aa kirosanana... QB:n grafiikanpakkaus tuolla moodilla on niin järkyttävä, ettei muuta voi sanoa. Pystyn kuitenkin tekemään screen 7:lle samankaltaisen kuvanmuokkauksen/jakamisen kuin screen 13 (koodivinkeissä GET-kuvien muokkaus), olisiko sellaisesta apua? Koetin nyt aluksi laittaa kuvanpiirtoa pokella, mutta se käsittelee näyttötilaa 7 2-värisenä...

Grey [27.02.2004 04:17:21]

#

Sqwiik ymmärsi täysin oikein sen mitä haluan. Eli ladattu kuva pilkotaan tilesetiksi, jossa kullekin tilelle on lisäksi oma indeksi, jolla se ladataan. Esim. tämän tyylinen "TILE 8, 16, 32" juttu siis lataisi kohtaan 8x16 tilen numero 32. Niin ja tilisetti on sitten tiedostossa.

Ratkaisu kuin ratkaisu käy. Toiveena on ainoastaan toimivuus SCREEN 7 (tai muussa vastaassa 320x200x16 tilassa, joita ovat myös 8 ja 9, jos osaa erään pienen kikan). Ja se että pyritään käyttämään sitä keskusmuistia, ei levyä. Vie kyllä enemmän muistia, mutta tietääkseni taulukon voi säätää viemään sitä vähemmän.

Niin ja niille jotka ihmettelevät miksi en käytä valmiita kirjastoja, on vastaus valmiina: Miksi käyttää jotakin jossa on miljoona asiaa, kun tarvitsee vain paria kolmea niistä?..

-Grey-

remontti-reiska [27.02.2004 08:19:56]

#

Eli oletko jo saanut sen aliohjelman vai pitääkö se vielä tehdä?

Grey [27.02.2004 09:45:15]

#

Jos olisin saanut sellaisen, olisin jo antanut kiitokset siitä, jotenka en siis vielä ole saanut sellaista.

-Grey-

sqwiik [27.02.2004 12:04:12]

#

Mitä tiedostomuotoa lataajan pitäisi tukea?

hunajavohveli [27.02.2004 12:04:35]

#

On tosiaan totta, että SCREEN 7 on huono, ja kaiken lisäksi vielä hidas. Hitaampi kuin 13, vaikka se käsittelee 16-kertaisen määrän värejä. Harmi, että joudun käyttämään usein, kun 13 ei tue kaksoispuskurointia.

Tilet siis ovat tiedostossa? Missä muodossa ne on tallennettu? Ovatko kaikki erikseen omissa tiedostoissa, vai kaikki samassa? Auttaisi, jos tietäisi, minkä niminen tiedosto on kyseessä.

sqwiik [27.02.2004 12:21:17]

#

Nyt on jotain tehtynäkin, mutta tarvitsen hieman lisäinfoa. Vastaa seuraaviin, ja saat (toivottavasti) koodia päivän sisään:

1) Millaisesta tiedostomuodosta kuva haetaan (BMP, PCX...)?

2) Millä tavalla tilet on tiedostoon jaettu, jonoksi/pinoksi/neliöksi eli sijoittelu?

3) Ovatko tilet neliöitä vai suorakulmioita?

Koodaan homman toimimaan QB:n omalla PUT-funktiolla, koska poketus ei oikein toimi. Ja GET:n kuvadatan pakkaus moodi 7:lla on syvältä, joten muistihävikin minimoimiseksi laita yksittäisen tilen leveydeksi 4:n monikerta.

Grey [27.02.2004 12:23:04]

#

Koko tilisetti on samassa tiedostossa, joka on nyt BMP. Joskin muodolla ei ole kuitenkaan sikäli väliä, koska pystyn helposti muuttamaan sen toiseksi kuvankäsittelyohjelmillani.

-Grey-

Grey [27.02.2004 14:16:37]

#

1) BMP.
2) Neliöksi
3) Ja.. neliöitä.
Niin, huomasin vasta nyt nuo, mutta parempi myöhään kuin ei milloinkaan..

-Grey-

remontti-reiska [27.02.2004 14:21:57]

#

Aha, että Sqwiik hoitaa homman :D. Ei sitten minua enää tarvitakkaan :).

sqwiik [28.02.2004 18:50:36]

#

Homma etenee, mutta pari mutkaa on matkassa BMP-kuvan purkamisessa... Laitan koodin siten, että se purkaa kuvan taulukkoon, ja sitten piirtää sen QB:n omalla PUT-funktiolla. Koodi on optimoidumpaa, jos laitat kaikki setin tilet pinoon eli alekkain kuvatiedostoon, ja kuten mainitsin, leveyden ja korkeuden pitää olla 4:n monikertoja.

Grey [29.02.2004 01:53:00]

#

Pinoon laittaminen ei ole mikään ongelma. Ja taitanee olla jopa parempi ratkaisu kuin neliössä oleminen. Uusien tilejen lisääminen on helpompaa, ja myös järjestyksessä pitäminen.

-Grey-

sqwiik [29.02.2004 11:18:37]

#

Lisäkorjaus - tilan minimoimiseksi, leveys 8:n monikerta.
Kiroan SCREEN 7:aa ja sen kuvanpakkausta.

sqwiik [01.03.2004 23:40:12]

#

Murskasin screen 7:n kuvanpakkauksen. Aliohjelma on valmis; se on spostissasi. Purkaa bittikartan suoraan GET-muotoon.


Sivun alkuun

Vastaus

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

Tietoa sivustosta