Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2011)

Post by MaGetzUb » Tue Jul 26, 2011 4:51 pm

Jos kenttä pitää reloadata, niin kannattaisi nollata muttujat ja aliohjelmalla alustaa kenttä. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus » Tue Jul 26, 2011 5:00 pm

MaGetzUb: Ei ole mitään muuttujia, paitsi objektit, jotka kaikki poistetaan aliohjelmassa alusta_kenttä.

Leikittyäni vähän lisää SetWindowilla, käy ilmi, että vika ei ollutkaan ObjectsOverlapissa vaan ihan muualla.

Vika on siinä, että kun kenttä on alustunut ihan normaalisti, ja ensimmäisen kerran kun sen jälkeen kutsutaan DrawGame, tulee mav. Kenttä alustetaan siis täysin samalla tavalla silloin, kun kenttään siirrytään ensimmäistä kertaa ja kun kenttä täytyy alustaa uudestaan sen takia, että pelaaja on kuollut.

Sen lisäksi, kun alusta_kenttä:ssä lisätään tähän kohtaan Wait 100:

Code: Select all

        If newobjecttype = 7 Then 'jos uusi objekti on tyypiltään näkymätön sivuttain kulkeva haamu
            
            newrl.rl = New (rl)
            newrl\obj = CloneObject (stick_master) 'ihan sama, mikä objekti kloonataan tässä vaiheessa
            newrl\suunta = 2.1
			newrl\invisibility = 1
            PositionObject newrl\obj, Int (ReadLine (thislevelfile)), Int(ReadLine(thislevelfile))
            Wait 100 
        EndIf
...ei tulekaan mavia, vaan sen sijaan kentän alustamisen jälkeen mikään objekti ei näy ruudulla. Tai siis ainakin edellisellä kerralla sillä oli tämänlainen vaikutus, nyt kun kokeilin uudestaan, niin tulee silti mav.

rallipelit

Re: Tyhmät kysymykset (I/2011)

Post by rallipelit » Tue Jul 26, 2011 9:04 pm

temu92 wrote: Hidastus radan ulkopuolella: käytä erillistä mustavalkoista kuvaa radan lisäksi (olettaen että olet toteuttanut radat käyttäen kuvia) jossa valkoinen on rata ja musta on kaikki muu alue. Tarkista sitten onko pelaajan auto mustalla alueella (PickImageColor/PickImageColor2 funktiolla saat värin) ja jos niin, hidasta auton vauhtia.
Miten saan tarkistettua tuolla pickimagecolorilla onko se auto mustalla alueella. Kokeilin if lauseella mutta tulee erroria.

User avatar
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Viltzu » Tue Jul 26, 2011 9:41 pm

rallipelit wrote:
temu92 wrote: Hidastus radan ulkopuolella: käytä erillistä mustavalkoista kuvaa radan lisäksi (olettaen että olet toteuttanut radat käyttäen kuvia) jossa valkoinen on rata ja musta on kaikki muu alue. Tarkista sitten onko pelaajan auto mustalla alueella (PickImageColor/PickImageColor2 funktiolla saat värin) ja jos niin, hidasta auton vauhtia.
Miten saan tarkistettua tuolla pickimagecolorilla onko se auto mustalla alueella. Kokeilin if lauseella mutta tulee erroria.
Katso manuaalista.

N_S

Re: Tyhmät kysymykset (I/2011)

Post by N_S » Wed Jul 27, 2011 6:03 pm

Onko joku tehnyt funktion joka kertoo mistä suunnasta törmäys, ImagesCollide, tapahtuu kuvilla?

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by temu92 » Wed Jul 27, 2011 6:50 pm

No sen saat helposti GetAngle:lla. Syötät siihen vaan kuvien koordinaatit. Jos kuvat on erikokoset niin sillon kannattaa ottaa kulma kuvien keskiosasta. Muista että koordinaattien järjestyskin vaikuttaa.

User avatar
hannes98
Newcomer
Posts: 16
Joined: Sat May 08, 2010 10:38 am

Re: Tyhmät kysymykset (I/2011)

Post by hannes98 » Wed Jul 27, 2011 7:04 pm

N_S wrote:Onko joku tehnyt funktion joka kertoo mistä suunnasta törmäys, ImagesCollide, tapahtuu kuvilla?
Ei minun mielestäni, mutta jotenkin näin sen pitäisi mennä.

Code: Select all

'Origo keskelle(koordinaattien pitää olla positiivisia)
ix = ImageWidth(kuva1) / 2
iy = ImageHieght(kuva1) / 2
ax = ImageWidth(kuva2) / 2
ay = ImageHieght(kuva2) / 2

'lasketaan kulma
kulma = GetAngle(ix, iy, ax, iy)
EDIT:

Oon hidas Temu kerkes ensin. :)

Hahaa!!! Tuhlasit elinaikaasi tyhmän viestini lukemiseen... :D

Projektit:

N_S

Re: Tyhmät kysymykset (I/2011)

Post by N_S » Thu Jul 28, 2011 6:39 pm

temu92 wrote:No sen saat helposti GetAngle:lla. Syötät siihen vaan kuvien koordinaatit. Jos kuvat on erikokoset niin sillon kannattaa ottaa kulma kuvien keskiosasta. Muista että koordinaattien järjestyskin vaikuttaa.
Aivan, kiituksia

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2011)

Post by MaGetzUb » Sat Jul 30, 2011 3:23 am

Yritän kirjoittamallani scaleimage funktiolla pienentää todella suurta kuvaa.. (2200x1200px), mutta tämä huutaa että ImageWidth failed! Onko se cb:n kuvilla joku rajoitus leveydessä?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Sat Jul 30, 2011 2:48 pm

Tein peliini "kentän" tilesterillä, ja siinä on talo minne voi mennä, ja tulla ulos, mutta kun on talon sisällä peli alkaa tökkimään ja on hidas, mutta kun taas menee pihalle jossa on pelkkää vihreää nurmikkoa pelistä tulee taas nopea.
Aluksi käytin framelimit 70, otin sen pois, mutta silti se on talon "sisällä" todella hidas.

Mistä johtuu , ja mitenkä saisin asian korjattua?

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by temu92 » Sat Jul 30, 2011 3:39 pm

Sitä koodiakin kannattas pistää, monellakaan kun ei ole varaa ostaa tai huollattaa kristallipalloja niin koodin näkeminen on vähän hankalaa. Onko peli ylhäältä- vai sivultapäin kuvattu? Selityksestäsi en osaa todellakaan arvata mikä on vikana, ja jos vika on Tilesteriin liittyvä, en osaa sanoa kun ei ole tullut sitä kertaakaan käytettyä mappien tekemiseen (lähinnä vaan A Stigmatoria).

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Sat Jul 30, 2011 4:10 pm

Miksi en saa kutsuttua dll:stä funktiota? Kokeilin ihan yksinkertaista c koodia testatakseni kutsumisen toimintaa, mutta havaitsin, että eihän se onnistu...

dll.c

Code: Select all

__declspec( dllexport ) void test( const void * _in, int in_size, void * _out, int out_sz )
{
	POKEBYTE(OUTPUT_MEMBLOCK,0,255);
}
test.cb

Code: Select all

mem = MakeMEMBlock(1)
CallDLL CHIPMUNK_DLL_PATH,"test",0,mem
Print PeekByte(mem,0)
WaitKey
Tuo koodi vain tulostaa 0:lla. Vaikka sen pitäisi tulostaa 255. En tajua mikä voisi olla vikana. (Nuo makrot on esan dll esimerkin...)
EDIT:

Kääntäjänä Visual Studio 2010

EDIT:

Ongelma ratkaistu...


Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Mon Aug 01, 2011 5:28 pm

Kun mulla on nyt tällänen koodinpätkä, ja minulla on animaatiot hahmosta, mitenkä saisin tämän näyttämään eri animaation esim. jos tyhjä objekti laitetaan positiivisille koordinaateille ja eri jos negatiivisille?

Code: Select all


SCREEN 800,600

FrameLimit 50


ClsColor cbwhite

unit = LoadAnimObject("spear_man_unit_front.bmp",53,97,0,5)
MaskObject unit, cbWhite
ShowObject unit, OFF
ObjectRange unit, 53,97
ObjectPickable unit,1

spear_man = CloneObject (unit)
ObjectRange spear_man, 53, 97
ObjectPickable spear_man,1

hiiri = LoadImage("cursor.bmp")
ShowMouse hiiri

tyhjä = MakeObject()


a = 0

Repeat





If a = 1 Then Gosub spear_man_move




CameraPick MouseX(), MouseY()

DrawGame

e = PickedObject()
Color cbBlack
If e And MouseHit(1) Then
Color cbRed

If e = spear_man Then
Text 0,0,"unit"
a = 1

EndIf

spear_man_move:
    If MouseHit(1) Then
        PositionObject tyhjä,MouseWX(),MouseWY()
        point=1
    EndIf


    If point=1 Then
        PointObject PickedObject(),tyhjä
        MoveObject PickedObject(),3
        PaintObject spear_man, unit
        PlayObject spear_man,2,11,0.25
   Else
   PlayObject spear_man, 0
    EndIf


    If ObjectsOverlap(PickedObject(),tyhjä) Then
        point=0
    EndIf




If MouseHit(2) Then a = 0



EndIf
DrawScreen
Until EscapeKey()


User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2011)

Post by MaGetzUb » Tue Aug 02, 2011 8:22 am

Ihminen wrote:Kun mulla on nyt tällänen koodinpätkä, ja minulla on animaatiot hahmosta, mitenkä saisin tämän näyttämään eri animaation esim. jos tyhjä objekti laitetaan positiivisille koordinaateille ja eri jos negatiivisille?

Code: Select all


SCREEN 800,600

FrameLimit 50


ClsColor cbwhite

unit = LoadAnimObject("spear_man_unit_front.bmp",53,97,0,5)
MaskObject unit, cbWhite
ShowObject unit, OFF
ObjectRange unit, 53,97
ObjectPickable unit,1

spear_man = CloneObject (unit)
ObjectRange spear_man, 53, 97
ObjectPickable spear_man,1

hiiri = LoadImage("cursor.bmp")
ShowMouse hiiri

tyhjä = MakeObject()


a = 0

Repeat





If a = 1 Then Gosub spear_man_move




CameraPick MouseX(), MouseY()

DrawGame

e = PickedObject()
Color cbBlack
If e And MouseHit(1) Then
Color cbRed

If e = spear_man Then
Text 0,0,"unit"
a = 1

EndIf

spear_man_move:
    If MouseHit(1) Then
        PositionObject tyhjä,MouseWX(),MouseWY()
        point=1
    EndIf


    If point=1 Then
        PointObject PickedObject(),tyhjä
        MoveObject PickedObject(),3
        PaintObject spear_man, unit
        PlayObject spear_man,2,11,0.25
   Else
   PlayObject spear_man, 0
    EndIf


    If ObjectsOverlap(PickedObject(),tyhjä) Then
        point=0
    EndIf




If MouseHit(2) Then a = 0



EndIf
DrawScreen
Until EscapeKey()

Siis mitähän nyt tarkoitat? Että jos hahmo on negatiivisilla koordinaateilla, näytetään erilaisia animaatio frameja, vai kun liikutaan vasemmalle (negatiivisia koordinaatteja päin) näytetään vasemmallepäin kuuluvia animaatio frameja?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi » Wed Aug 03, 2011 4:37 pm

Mikähän tässä mättää:

Code: Select all

Repeat
	AnimMouse ("Media/note.bmp",32,32,8)
	DrawScreen
Forever

Function AnimMouse (filu$, fleveys, fkorkeus, pituus)

monistus$ = "k"

If valmiskuva = 0 Then
	raakakuva = LoadImage (filu$)
	
	For määrä = 0 To pituus
		nimi = String (monistus$,määrä)
		nimi = MakeImage (fleveys, fkorkeus)
		CopyBox fleveys * määrä, fkorkeus,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (nimi)
	Next määrä
	
	DeleteImage raakakuva
	
	valmiskuva = valmiskuva + 1
EndIf

For määrät = 0 To pituus
	nimi = String (monistus$,määrä)
	ShowMouse nimi
	Wait 100
Next määrät

EndFunction
Eli funkkarin tehtävänä olisi pilkkoa animoitu kuva frameiksi ja pyörittää frameja showmousena, eli animoida hiiri.Kun hiiren laittaa ikkunan päälle, ei näy mitään. Tuntuu että jokin oleellinen on pielessä mutta en saa vaan päähän sitä...

User avatar
valscion
Moderator
Moderator
Posts: 1587
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion » Wed Aug 03, 2011 6:40 pm

Peltsi wrote:Mikähän tässä mättää:

Code: Select all

...
		nimi = String (monistus$,määrä)
		nimi = MakeImage (fleveys, fkorkeus)
...
Eli funkkarin tehtävänä olisi pilkkoa animoitu kuva frameiksi ja pyörittää frameja showmousena, eli animoida hiiri.Kun hiiren laittaa ikkunan päälle, ei näy mitään. Tuntuu että jokin oleellinen on pielessä mutta en saa vaan päähän sitä...
Tuohon lainaukseen laitoin ensimmäisen ongelmakohdan ainakin. Et ole määritellyt nimi-muuttujaa merkkijonoksi ja vaikka olisitkin, yrität sen jälkeen laittaa siihen kuvaa.

EDIT: Tarkemmin katsottuna niin en oikein edes ymmärrä, mitä haet takaa koko String-funktion käytöllä...
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com

User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi » Wed Aug 03, 2011 8:00 pm

VesQ wrote: Tuohon lainaukseen laitoin ensimmäisen ongelmakohdan ainakin. Et ole määritellyt nimi-muuttujaa merkkijonoksi ja vaikka olisitkin, yrität sen jälkeen laittaa siihen kuvaa.

EDIT: Tarkemmin katsottuna niin en oikein edes ymmärrä, mitä haet takaa koko String-funktion käytöllä...
Tämmöstä kokeilin myös, mutta ei paljon parantunut:

Code: Select all

Type KUVAT
    Field img
End Type 

Repeat
	AnimMouse ("Media/note.bmp",32,32,8)
	DrawScreen
Forever

Function AnimMouse (filu$, fleveys, fkorkeus, pituus)

If valmiskuva = 0 Then
	raakakuva = LoadImage (filu$)
	
	For määrä = 0 To pituus
		kuva.KUVAT = New (KUVAT)
		kuva\img = MakeImage (fleveys, fkorkeus)
		CopyBox fleveys * määrä, fkorkeus,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (kuva\img)
	Next määrä
	
	DeleteImage raakakuva
	
	valmiskuva = valmiskuva + 1
EndIf

For kuva.KUVAT = Each KUVAT
	ShowMouse kuva\img 
	Wait 100
Next kuva

EndFunction

User avatar
valscion
Moderator
Moderator
Posts: 1587
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion » Wed Aug 03, 2011 11:39 pm

Peltsi wrote:
VesQ wrote: Tuohon lainaukseen laitoin ensimmäisen ongelmakohdan ainakin. Et ole määritellyt nimi-muuttujaa merkkijonoksi ja vaikka olisitkin, yrität sen jälkeen laittaa siihen kuvaa.

EDIT: Tarkemmin katsottuna niin en oikein edes ymmärrä, mitä haet takaa koko String-funktion käytöllä...
Tämmöstä kokeilin myös, mutta ei paljon parantunut:

Code: Select all

		CopyBox fleveys * määrä, fkorkeus,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (kuva\img)
Haluat varmaan pikemminkin aloittaa CopyBoxilla kopioinnin koordinaateista 0,0 kuin fleveys*määrä, fkorkeus.

Eli tuon edellisen kohdan pitäisi vissiin olla näin:

Code: Select all

CopyBox fleveys * määrä, 0,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (kuva\img)
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com

User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi » Thu Aug 04, 2011 12:57 am

VesQ wrote:
Peltsi wrote:
VesQ wrote: Tuohon lainaukseen laitoin ensimmäisen ongelmakohdan ainakin. Et ole määritellyt nimi-muuttujaa merkkijonoksi ja vaikka olisitkin, yrität sen jälkeen laittaa siihen kuvaa.

EDIT: Tarkemmin katsottuna niin en oikein edes ymmärrä, mitä haet takaa koko String-funktion käytöllä...
Tämmöstä kokeilin myös, mutta ei paljon parantunut:

Code: Select all

		CopyBox fleveys * määrä, fkorkeus,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (kuva\img)
Haluat varmaan pikemminkin aloittaa CopyBoxilla kopioinnin koordinaateista 0,0 kuin fleveys*määrä, fkorkeus.

Eli tuon edellisen kohdan pitäisi vissiin olla näin:

Code: Select all

CopyBox fleveys * määrä, 0,fleveys, fkorkeus, 0, 0, Image(raakakuva),Image (kuva\img)
Joo, siinä oli näköjään käynyt moka, ja sitten piti vielä lisätä loppuun yksi drawscreen...

Code: Select all

For kuva.KUVAT = Each KUVAT
	ShowMouse kuva\img
        Drawscreen
	Wait 100
Next kuva
Kiitos avusta :D

Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen » Thu Aug 04, 2011 4:38 pm

MaGetzUb wrote:
Ihminen wrote:Kun mulla on nyt tällänen koodinpätkä, ja minulla on animaatiot hahmosta, mitenkä saisin tämän näyttämään eri animaation esim. jos tyhjä objekti laitetaan positiivisille koordinaateille ja eri jos negatiivisille?

Code: Select all


SCREEN 800,600

FrameLimit 50


ClsColor cbwhite

unit = LoadAnimObject("spear_man_unit_front.bmp",53,97,0,5)
MaskObject unit, cbWhite
ShowObject unit, OFF
ObjectRange unit, 53,97
ObjectPickable unit,1

spear_man = CloneObject (unit)
ObjectRange spear_man, 53, 97
ObjectPickable spear_man,1

hiiri = LoadImage("cursor.bmp")
ShowMouse hiiri

tyhjä = MakeObject()


a = 0

Repeat





If a = 1 Then Gosub spear_man_move




CameraPick MouseX(), MouseY()

DrawGame

e = PickedObject()
Color cbBlack
If e And MouseHit(1) Then
Color cbRed

If e = spear_man Then
Text 0,0,"unit"
a = 1

EndIf

spear_man_move:
    If MouseHit(1) Then
        PositionObject tyhjä,MouseWX(),MouseWY()
        point=1
    EndIf


    If point=1 Then
        PointObject PickedObject(),tyhjä
        MoveObject PickedObject(),3
        PaintObject spear_man, unit
        PlayObject spear_man,2,11,0.25
   Else
   PlayObject spear_man, 0
    EndIf


    If ObjectsOverlap(PickedObject(),tyhjä) Then
        point=0
    EndIf




If MouseHit(2) Then a = 0



EndIf
DrawScreen
Until EscapeKey()

Siis mitähän nyt tarkoitat? Että jos hahmo on negatiivisilla koordinaateilla, näytetään erilaisia animaatio frameja, vai kun liikutaan vasemmalle (negatiivisia koordinaatteja päin) näytetään vasemmallepäin kuuluvia animaatio frameja?
Siis tarkoitin että jos hahmoa liikutetaan...

Locked