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-
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?
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.
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ä...
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-
Eli oletko jo saanut sen aliohjelman vai pitääkö se vielä tehdä?
Jos olisin saanut sellaisen, olisin jo antanut kiitokset siitä, jotenka en siis vielä ole saanut sellaista.
-Grey-
Mitä tiedostomuotoa lataajan pitäisi tukea?
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ä.
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.
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-
1) BMP.
2) Neliöksi
3) Ja.. neliöitä.
Niin, huomasin vasta nyt nuo, mutta parempi myöhään kuin ei milloinkaan..
-Grey-
Aha, että Sqwiik hoitaa homman :D. Ei sitten minua enää tarvitakkaan :).
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.
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-
Lisäkorjaus - tilan minimoimiseksi, leveys 8:n monikerta.
Kiroan SCREEN 7:aa ja sen kuvanpakkausta.
Murskasin screen 7:n kuvanpakkauksen. Aliohjelma on valmis; se on spostissasi. Purkaa bittikartan suoraan GET-muotoon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.