Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: C kielellä yksinkertaista grafiikkaa

Sivun loppuun

Ville [15.06.2009 09:20:02]

#

Hei tietäjät.

Olisin kysellyt sellaista että miten saadaan C kielellä aikaan esim. neliöitä, ympyröitä jne.
Siis tarkennuksena, kun ajan ohjelmaa komentoriviltä xp käyttiksellä.

Nyt kun on tullut näitä C:n perusteita opeteltua ja tuli mieleen kuinka joskus basicin kanssa ruudulle sai tuollaisia piirrettyä.

Tiedän että se ei ole enää tätä päivää ja on olemassa SDL vaihtoehto jolla sitten saa aikaiseksi ja vaikka mitä.

Homma olisi ilmeisesti mitä helpoin jos olisi borlandin kääntäjä käytössä, grafiikka kirjasto vain mukaan ja koodia kirjoittamaan. Jobs done.

Mutta käytän Dev-C++:saan (vaikka nyt varmaan taas joku kertoo ettei kannata....) ja sen kanssa ei tuota kääntäjää saa käytettyä.

Joten olisiko vinkkiä, koetin täältä putkastakin etsiskellä, mutta tuntui tuo SDL olevan se "main option".

Metabolix [15.06.2009 09:24:07]

#

C:ssä ei ole mitään grafiikkaominaisuuksia, ja myös SDL täyttää vaatimuksen "grafiikkakirjasto vain mukaan ja koodia kirjoittamaan". Toinen hyvä vaihtoehto on Allegro, se taitaa olla jopa helpompi noiden perusmuotojen kannalta.

Teuro [15.06.2009 09:53:35]

#

Joo allegro on rajoituksistaan huolimatta aika helppokäyttöinen kirjasto. Dev-c++:e löytyy jopa ladattava dev-pak allegrosta, jossa tulee tarvittavat tiedostot mukana. Mikäli valintasi osuus tähän pakettiin voinen heti mainita, että allegron oma dokumentaatio on ihan kattava väline. Yllättäen käytän siis itse allegroa omissa pikku projekteissa.

Ville [15.06.2009 11:53:43]

#

Kiitos vinkistä.

Allegro näytti ainakin nopealla vilkaisulla ehkäpä juuri siltä mitä olin hakemassa.
Tutkin paremmalla ajalla lisää ja varmaan sitten kyselen tyhmiä lisää :p

Nyt täytyy vielä etsiä jostain sivu missä kerrotaan kuinka saan tuon Allegron pelaamaan Dev-C++:n kanssa.

Nimittäin tuolla Allegron sivulla olevasta linkistä ei mitään löytynyt ...
Eli täältä : http://www.allegro.cc/files/install-devcpp.html ==> "File not found"

Teuro [15.06.2009 12:14:21]

#

devpak löytyy ainakin täältä. Asennus on aika suoraviivainen toimenpide dev-cpp:n omalla package managerilla.

Ville [15.06.2009 14:20:07]

#

Teuro kirjoitti:

devpak löytyy ainakin täältä. Asennus on aika suoraviivainen toimenpide dev-cpp:n omalla package managerilla.

Jep paketti löytyi ja oli tosi "pala kakkua" sen asennus paketinhallinnan kautta.

Kiitos Teuro avusta

Jaska [03.07.2009 20:32:23]

#

Miten on mahdollista, että vaikka C:ssä ei ole grafiikkaominaisuuksia ja SDL on kirjoitettu C:llä, niin SDL:llä voi piirtää grafiikkaa? Eikös C:llä voi kuitenkin kirjoittaa laiteläheistä ohjelmointia?

eq [03.07.2009 22:50:02]

#

Jaska kirjoitti:

Miten on mahdollista, että vaikka C:ssä ei ole grafiikkaominaisuuksia ja SDL on kirjoitettu C:llä, niin SDL:llä voi piirtää grafiikkaa? Eikös C:llä voi kuitenkin kirjoittaa laiteläheistä ohjelmointia?

En täysin ymmärrä kysymystäsi, etenkin jälkimmäisen yhteyttä ensimmäiseen. Yritetään kuitenkin:

C:n standardikirjasto ei sisällä toiminnallisuutta (ts. funktioita), joiden avulla voi "piirtää" näytölle grafiikkaa – kas kun C:n standardi ei määrittele kovin tarkasti esimerkiksi ajoympäristöä, eikä luonnollisesti vaadi minkäänlaista näyttölaitetta. Erilaiset hallitut ympäristöt, kuten käyttöjärjestelmät, voivat sen sijaan tarjota (käyttöjärjestelmästä riippuvaisia) tapoja käyttöjärjestelmän grafiikkaominaisuuksien käyttöön (näytönohjaimen käskyttämiseen, tavalla tai toisella). Näiden avulla myös erinäiset kirjastot, kuten SDL, piirtämisen hoitavat – tarjoten samalla näennäistä alustariippumattomuutta.

Kysymyksesi kannalta lienee oleellisinta ymmärtää se, että toteamus "C:ssä ei ole" tarkoittaa samaa kuin "C:n standardikirjastossa ei ole".

Grez [04.07.2009 00:17:07]

#

Niin, tuohan on vähän kuin toteamus, että "autossa x ei ole ilmastointia". Eihän se silti tarkoita etteikö sellaista voisi siihen rakentaa tai asentaa.

Jaska [07.07.2009 17:35:10]

#

Ajattelin, että jos C:ssä ei ole grafiikkaominaisuuksia, niin sillä ei voi tehdä grafiikkaa. Koska SDL:llä voi tehdä grafiikkaa ja SDL on kirjoitettu C:llä, niin C:ssä on oltava grafiikkaominaisuuksia. Eri asia on sitten, miten hankalasti grafiikkaominaisuudet saa käyttöön, eli miten syvälle laitteiston käsittelyyn joudutaan menemään.

os [07.07.2009 18:14:53]

#

Koodi, joka lopulta "oikeasti" piirtää grafiikan on käytännössä (EDIT: ei näytönohjaimen ajureissa vaan) käyttöjärjestelmässä, joka on näiltä osin luultavasti kirjoitettu assemblyllä. Voisit teoriassa kopioida tällaisen koodin inline-assemblynä C-ohjelmaasi, jolloin se sisältää myös "oikean" piirtokoodin. Sama onnistuu myös linkittämällä kyseisen koodin sisältävä funktio normaalisti ohjelmaan. Käyttöjärjestelmäsi ei tosin anna sinun normaalisti ajaa tällaista ohjelmaa.

Grez [07.07.2009 18:26:16]

#

Vaikka assemblyä ei edes tarvittaisi, niin ei C:ssä silti olisi grafiikkaominaisuuksia. Ei 386 assemblyssäkään ole grafiikkaominaisuuksia.

Siinä vaiheessa jos jossain kielessä on käskyjä, jotka on tarkoitettu nimenomaan grafiikan tekoon/käsittelyyn, niin siinä on grafiikkaominaisuuksia. Pelkkiä geneerisiä käskyjä ei oikein voi lukea grafiikkaominaisuudeksi, vaikka jokin käskyjen käyttötapa mahdollistaisikin grafiikan tekemisen.

Ihme_kala [07.07.2009 18:27:23]

#

Grez kirjoitti:

Jep ja lautakasa on koirankoppi, koska siitä voi rakentaa sellaisen.

Logiikkasi on lyömätöntä - jatka samaa rataa.

Helvetti, miksi pitää alkaa vittuilla kun toinen ystävällisesti kertoo miksi ajatteli noin miten ajatteli. Ei ole ehkä ihan yhtä helppo verrata johonkin koppeihin ja lautakasoihin tuota asiaa, jos ei ymmärrä, että mikä juttu tietokoneessa lopulta tekee sen piirtämisen ja miksi sitä ei C:llä voi suoraan kirjoittaa tms.

Metabolix [07.07.2009 18:29:01]

#

Jos näytön ottaa irti, koko koneessa ei ole minkäänlaisia grafiikkaominaisuuksia, ei millään kielellä. Tästä voi ehkä päätellä, että kyseessä ei ole minkään kielen toiminto vaan enemmänkin rautatason ominaisuus. Perinteinen VGA-grafiikka toimii niinkin mutkikkaasti, että piirrettävät asiat kirjoitetaan tiettyyn kohti tietokoneen muistiavaruutta ja virtapiirit huolehtivat, että tämä kyseinen data päätyy näytönohjaimelle ja edelleen VGA-johtoa pitkin näytölle.

Grez [07.07.2009 18:33:54]

#

Ihme_kala kirjoitti:

miksi pitää alkaa vittuilla kun toinen ystävällisesti kertoo miksi ajatteli noin miten ajatteli.

Minulta taisi jäädä mennyt aikamuoto huomaamatta, joten ajattelin että eikö se nyt vieläkään mennyt jakeluun.

Pitäisi provosoitua vähemmän omasta turhautumisesta. Anteeksi.

Metabolix kirjoitti:

Tästä voi ehkä päätellä, että kyseessä ei ole minkään kielen toiminto vaan enemmänkin rautatason ominaisuus.

Toisaalta jos kielessä on toimintoja, jotka on tarkoitettu nimenomaan grafiikan käsittelyyn, niin silloin ko. kielessä on minun mielestä grafiikkaominaisuuksia. Ja ne ominaisuudet on siinä kielessä silloinkin, vaikka ne ei jostain ulkoisesta syystä sattuisikaan toimimaan - esim. jos käyttäjä nyppää grafiikkakortin irti.

Metabolix [08.07.2009 09:21:15]

#

Grez kirjoitti:

Toisaalta jos kielessä on toimintoja, jotka on tarkoitettu nimenomaan grafiikan käsittelyyn, niin silloin ko. kielessä on minun mielestä grafiikkaominaisuuksia.

Tämä on taas hassusti ajateltu, koska millä tahansa kielellä voi tehdä ohjelman, joka jollain tavalla käsittelee grafiikkaa muistissa. Kun joku tekee näistä asioista funktioita, voi vaikkapa Brainfuckiin ladata netistä grafiikkaominaisuuksia. Myös kielen määritelmä on kysymys sinänsä; usein kieli ja standardikirjasto on erotettu toisistaan, jolloin kieli itsessään ei ole juuri enempää kuin helpompi rajapinta konekieleen ja sisältää siis pohjimmiltaan samat ominaisuudet.

Alkaa olla aika turha keskustelu, eiköhän lopeteta. :)

Grez [08.07.2009 10:03:35]

#

Metabolix kirjoitti:

Tämä on taas hassusti ajateltu, koska millä tahansa kielellä voi tehdä ohjelman, joka jollain tavalla käsittelee grafiikkaa muistissa.

Ei minusta, silloin ne grafiikkaominaisuudet on siinä kielellä kirjoitetussa koodissa, ei kielessä itsessään.

Ota vertailukohdaksi QBasic. Siellä on kielessä itsessään komentoja kuten circle, line, pset. Eli kielessä aivan selvästi on grafiikkaominaisuuksia. Silti sillä voi olla vaikeampaa tehdä näyttäviä graafisia sovelluksia, kuin vaikka C-kielellä, jossa ei ole grafiikkaominaisuuksia.

Metabolix kirjoitti:

Kun joku tekee näistä asioista funktioita, voi vaikkapa Brainfuckiin ladata netistä grafiikkaominaisuuksia.

Eli Brainfuckissa itsessään ei ole grafiikkaominaisuuksia, mutta siihen voi lisätä niitä. (Edelleen mielestäni aivan loogista)

Metabolix kirjoitti:

Myös kielen määritelmä on kysymys sinänsä; usein kieli ja standardikirjasto on erotettu toisistaan, jolloin kieli itsessään ei ole juuri enempää kuin helpompi rajapinta konekieleen ja sisältää siis pohjimmiltaan samat ominaisuudet.

No tässäkään ei ole mielestäni mitään ongelmaa. Kielessä itsessään voi olla grafiikkaominaisuuksia tai standardikirjastossa voi olla grafiikkaominaisuuksia tai sitten kummassakin tai sitten ei kummassakaan. Tietty jos puhutaan kielestä jossa ko. ominaisuudet on standardikirjastossa, niin sitten voi olla hyvä täsmentää puhuuko kielestä ilman sitä vai sen kanssa. Keskustelun aiheena olevassa C:ssä tämä ei käsittääkseni ole ongelma, kun standardikirjastossakaan ei ole.


Sivun alkuun

Vastaus

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

Tietoa sivustosta