Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

GetPixel, GetPixel2, PickColor
On valinnan varaa, vai onko :twisted:
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2010)

Post by Sly_Jack0 »

DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

PickColor ja GetRGB
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

Code: Select all

Lock SCREEN()
pikseli = GetPixel2 x, y
Unlock SCREEN()
Sitten tiedostosta lukiessa vain laitat PutPixelillä takaisin
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Miten saan sijoitettua hahmon pelikentän sisälle (Rajattu Hit-kerroksella) heti ohjelman alkaessa? Olen yrittänyt positionobjectia, mutta hahmo ilmestyy silti aina pelikentän "oikeaan" keskustaan, joka sattuu minulla olemaan kentän ulkopuolella... :/
"Baby," I said. "I'm a genius but nobody knows it but me."
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

esa94 wrote:
DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

Code: Select all

Lock SCREEN()
pikseli = GetPixel2 x, y
Unlock SCREEN()
Sitten tiedostosta lukiessa vain laitat PutPixelillä takaisin
Ei toimi... voisiko joku ystävällisesti korjata...?

Code: Select all

Include "cbFun.cb"
SCREEN 700,600
begin:
Print "Free bmp-, jpg-, png- and tga-image convert to cim!"
Repeat
cou=Input("Do you want to convert(1) or unpack .cim -file to bmp(2)? :")
DrawScreen
Until KeyUp(28)
CloseInput
If cou=2 Then Goto unpack
Repeat
Repeat
path$=Input("Give me a file path what exists: ")
DrawScreen
Until KeyUp(28)
CloseInput

If FileExists(path) Then
Print "Checking if file exist..." : Wait 1000 
If check() = 1 Then 
img=LoadImage(""+path$)
Print "Founded!" : Wait 1000 : Goto show
Else
Print "Wrong type of file!" : print ""+Right(path$,4) + " is not correct format!" : Wait 5000 

EndIf
Else
Print "File doesn´t exist!"
Wait 2000
Goto begin
EndIf

Forever

Function check()
If Right(path$,4) = ".bmp" Or Right(path$,4) = ".jpg" Or Right(path$,4) = ".png" Or Right(path$,4) = ".tga" Then
Return 1
Else
Return 1
EndIf
EndFunction

show:
Print "Please wait..!"
DrawImage img, 100,100
DrawScreen
AddText ".bmp (1)  .cim (2)"
Repeat
format$=Input("Whitch one format do you want to convert '"+path$+"' - file? ")
DrawScreen
Until KeyUp(2) Or KeyUp(3)
CloseInput
Gosub convert
Print "Conversion successfully!" : Wait 2000 : Goto begin
Return

convert:
If format = "1" Then
AddText "Starting converting your image to BMP...."
DrawScreen
Wait 25000
Cls
newfilepath$=Left(path$,Len(path$)-4) + ".bmp"
SCREEN ImageWidth(img), ImageHeight(img)
DrawImage img,0,0
DrawScreen
ScreenShot ""+newfilepath
Else


Print "Converting... Wait! Screen is reserved to converting!"
Wait 2000
ClearText
DrawScreen
DrawImage img,0,0
DrawScreen
Wait 1000
newfilepath$=Left(path$,Len(path$)-4) + ".cim"
newimage=OpenToWrite(""+newfilepath$)
WriteInt newimage, ImageWidth(img)
WriteInt newimage, ImageHeight(img)
For y=0 To ImageHeight(img)
For x=0 To ImageWidth(img)
Lock SCREEN()
pikseli = GetPixel2(x, y)
Unlock SCREEN()
PickColor x,y
    WriteByte newimage, pikseli
    Dot x,y
Next x
Next y
CloseFile newimage
Color 255,255,255
EndIf
Return

unpack:
Repeat
    path$=Input("Give me a (cim)file path what exists: ")
    DrawScreen
    Until KeyUp(28)
    CloseInput
    
    If FileExists(path) Then
        Print "Unpacking..." : Wait 1000 
        cim=OpenToRead(""+path$)
        width=ReadInt(cim)
        height=ReadInt(cim)
        For y=0 To height
            For x=0 To width
Lock SCREEN()
PutPixel2 x, y, ReadByte(cim)
Unlock SCREEN()
            Next x
        Next y
        DrawScreen
        ScreenShot ""+left(path,Len(path)-4) + ".bmp"
    Else
        Print "File doesn´t exist!"
        Wait 2000
        Goto begin
    EndIf

Return
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by SPuntte »

DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

Komppaan itseäni: viewtopic.php?p=39598#p39598
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

SPuntte wrote:
DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

Komppaan itseäni: viewtopic.php?p=39598#p39598
Nice!
Entäs tiedostosta lukeminen?
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2010)

Post by Wingman »

DJ-Nerd wrote:
SPuntte wrote:
DJ-Nerd wrote:Miten haen tietyn RGB-arvon tietyssä näyttökoordinaatissa sijaitsevasta pikselistä vai onko se edes mahdollista?
EDIT:

olen siis tekemässä ohjelmaa joka tallentaa pikseleitä tiedostoon

Komppaan itseäni: viewtopic.php?p=39598#p39598
Nice!
Entäs tiedostosta lukeminen?
readline ja siihen liittyvät funktiot, manuaalia vois opetella käyttämään...
- - - -
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Wingman wrote:
DJ-Nerd wrote: Nice!
Entäs tiedostosta lukeminen?
readline ja siihen liittyvät funktiot, manuaalia vois opetella käyttämään...
Myönnän että edellinen viestini oli hieman epäselvä, korjaan:
Miten luetaan noita pikselitietoja tiedostosta ja niiden perusteella piirretään alkuperäinen kuva?
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2010)

Post by phons »

huoh... noh helpoin tapa ei ole purkaa pikseliä RGB:ksi vaan kirjoitat pikselin WriteInt:llä ja GetPixel2():lla tiedostoon. Luet ReadInt:llä ja sitten piirrät PutPixel:llä.

Wingman: fail... 1. miksi antaisit x ja y arvot kun voit lukea kaikki pikselit järjestyksessä... 2. ei RGB arvoja hidastaa paljon, joutuu lukemaan 2 lukua enemmän ja käyttämään PutPixelin sijasta Dot:ia ellei muunna RGB:tä biteiksi...
Last edited by phons on Sat Jun 05, 2010 1:31 pm, edited 1 time in total.
Image
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2010)

Post by Wingman »

DJ-Nerd wrote:
Wingman wrote:
DJ-Nerd wrote: Nice!
Entäs tiedostosta lukeminen?
readline ja siihen liittyvät funktiot, manuaalia vois opetella käyttämään...
Myönnän että edellinen viestini oli hieman epäselvä, korjaan:
Miten luetaan noita pikselitietoja tiedostosta ja niiden perusteella piirretään alkuperäinen kuva?
vaikka niin, että readbyte/init:llä annat x,y,red,green ja blue arvot, ja piirrät pisteen näillä arvoilla
- - - -
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jani »

Wingman wrote:
DJ-Nerd wrote:
Wingman wrote: readline ja siihen liittyvät funktiot, manuaalia vois opetella käyttämään...
Myönnän että edellinen viestini oli hieman epäselvä, korjaan:
Miten luetaan noita pikselitietoja tiedostosta ja niiden perusteella piirretään alkuperäinen kuva?
vaikka niin, että readbyte/init:llä annat x,y,red,green ja blue arvot, ja piirrät pisteen näillä arvoilla
Tähän ei tarvita kuin:
for-loop x2
ReadInt x1
PutPixel x1

Eli luetaan tiedostosta leveys ja korkeus, for-loopit sisäkkäin ja avót. Eli ei tarvitse lukea x eikä y. Nuo kolme väriä taas tulevat sen pixelin arvossa. Toivottavasti en haksahtanut pahasti.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Code: Select all

Include "cbApi.cb"
If FileDialog(OPEN_FILE_DLG, "bmp", "", "Image Files|*.bmp;*.jpg;*.png;*.tga|") = IDOK Then
    img = LoadImage(FileDialogData(FD_FULLNAME))
    Else
    MakeError "!"
EndIf
DrawImage img,0,0
Repeat
DrawScreen
Forever
ja ainut mikä tuossa toimii on MakeError "!".
Missä vika?
Ei suostu millään konstilla käsittelemään noita apijuttuja!
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez »

DJ-Nerd wrote:ja ainut mikä tuossa toimii on MakeError "!".
Missä vika?
Ei suostu millään konstilla käsittelemään noita apijuttuja!
Piirtokomento on silmukan ulkopuolella.

Muutoin kyllä toimii tuo koodi omalla koneella. CbApi.dll:stäkään ongelma tuskin voi johtua, jos ohjelma suostuu käynnistymään.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Jonez wrote:
DJ-Nerd wrote:ja ainut mikä tuossa toimii on MakeError "!".
Missä vika?
Ei suostu millään konstilla käsittelemään noita apijuttuja!
Piirtokomento on silmukan ulkopuolella.

Muutoin kyllä toimii tuo koodi omalla koneella. CbApi.dll:stäkään ongelma tuskin voi johtua, jos ohjelma suostuu käynnistymään.
Ei se tuosta ole kiinni...
If-lause vaan ei anna koskaan true-arvoa.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Olen siirtänyt TileGenin muistitikulle, jotta pystyn muokkaamaan karttoja myös muilla koneilla. Otin sen alunperin Windows XP:ltä ja Win 7:lla toimivalla läppärillä meni ihan normaalisti, mutta nyt toisen koneen XP ei suostu käynnistämään vaan herjaa "Sovelluksen alustus epäonnistui (0xc0000135). Lopeta sovellus valitsemalla OK."

Missä vika?
"Baby," I said. "I'm a genius but nobody knows it but me."
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

Hene wrote:Olen siirtänyt TileGenin muistitikulle, jotta pystyn muokkaamaan karttoja myös muilla koneilla. Otin sen alunperin Windows XP:ltä ja Win 7:lla toimivalla läppärillä meni ihan normaalisti, mutta nyt toisen koneen XP ei suostu käynnistämään vaan herjaa "Sovelluksen alustus epäonnistui (0xc0000135). Lopeta sovellus valitsemalla OK."

Missä vika?
Onko .NET Framework asennettu?
vieras

Re: Tyhmät kysymykset (I/2010)

Post by vieras »

en tajua mikä täs mättää?

Code: Select all

FrameLimit 40

Global e,ee,a,s,a1,s1

While (InStr(gx$,Str(e)) Or e=0)
e=Rand(1,16)
Wend
gx$=gx$+" "+e
katotaa(e,a,s)

While (InStr(gx$,Str(ee)) Or ee=0)
ee=Rand(1,16)
Wend
gx$=gx$+" "+ee
katotaa(ee,a1,s1)

Repeat

print a

print s

print a1

print s1

DrawScreen

Forever

Function katotaa(ran_de,e_ka,to_ka)

If ran_de=1 Then e_ka=20 : to_ka=20

If ran_de=2 Then e_ka=120 : to_ka=20

If ran_de=3 Then e_ka=220 : to_ka=20

If ran_de=4 Then e_ka=320 : to_ka=20

If ran_de=5 Then e_ka=20 : to_ka=120

If ran_de=6 Then e_ka=120 : to_ka=120

If ran_de=7 Then e_ka=220 : to_ka=120

If ran_de=8 Then e_ka=320 : to_ka=120

If ran_de=9 Then e_ka=20 : to_ka=220

If ran_de=10 Then e_ka=120 : to_ka=220

If ran_de=11 Then e_ka=220 : to_ka=220

If ran_de=12 Then e_ka=320 : to_ka=220

If ran_de=13 Then e_ka=20 : to_ka=320

If ran_de=14 Then e_ka=120 : to_ka=320

If ran_de=15 Then e_ka=220 : to_ka=320

If ran_de=16 Then e_ka=320 : to_ka=320

End Function
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

vieras wrote:en tajua mikä täs mättää?

Code: Select all

FrameLimit 40

Global e,ee,a,s,a1,s1

While (InStr(gx$,Str(e)) Or e=0)
e=Rand(1,16)
Wend
gx$=gx$+" "+e
katotaa(e,a,s)

While (InStr(gx$,Str(ee)) Or ee=0)
ee=Rand(1,16)
Wend
gx$=gx$+" "+ee
katotaa(ee,a1,s1)

Repeat

print a

print s

print a1

print s1

DrawScreen

Forever

Function katotaa(ran_de,e_ka,to_ka)

If ran_de=1 Then e_ka=20 : to_ka=20

If ran_de=2 Then e_ka=120 : to_ka=20

If ran_de=3 Then e_ka=220 : to_ka=20

If ran_de=4 Then e_ka=320 : to_ka=20

If ran_de=5 Then e_ka=20 : to_ka=120

If ran_de=6 Then e_ka=120 : to_ka=120

If ran_de=7 Then e_ka=220 : to_ka=120

If ran_de=8 Then e_ka=320 : to_ka=120

If ran_de=9 Then e_ka=20 : to_ka=220

If ran_de=10 Then e_ka=120 : to_ka=220

If ran_de=11 Then e_ka=220 : to_ka=220

If ran_de=12 Then e_ka=320 : to_ka=220

If ran_de=13 Then e_ka=20 : to_ka=320

If ran_de=14 Then e_ka=120 : to_ka=320

If ran_de=15 Then e_ka=220 : to_ka=320

If ran_de=16 Then e_ka=320 : to_ka=320

End Function
En muista toimiko : lyhennetyn if:n kanssa. Sitä paitsi, käyttäisit switchiä.

Code: Select all

Select ran_de
Case 1:
e_ka = 20
to_ka = 20
Case 2:
...
EndSelect
Locked