Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: Tyhmät kysymykset (I/2011)

Post by Dimple »

@Kumiankka:
Olit kyllä tehnyt ihan hyvin ohjeideni mukaan, mutta minulle oli sattunut pieni lipsahdus siinä kaavassa. Lisäksi piirsit viivat vielä hitusen väärin. Tässä on korjattu versio koodistasi:

Code: Select all

Function Box2(_x#, _y#, _hsize#, _vsize#, _angle#)
    
    x1 = _x  - _hsize / 2                 // vas ylä
    y1 = _y  - _vsize / 2
    xx1 = _x + Cos(_angle)*(x1-_x) - Sin(_angle)*(y1 - _y)
    yy1 = _y + Sin(_angle)*(x1-_x) + Cos(_angle)*(y1 - _y)  // Tässä kohtaa kaavaa oli (x1-_x) ja (y1 - _y) väärin päin
    
    x2  = _x  + _hsize / 2                // oik ylä
    y2  = _y  - _vsize / 2
    xx2 = _x + Cos(_angle)*(x2-_x) - Sin(_angle)*(y2 - _y)
	yy2 = _y + Sin(_angle)*(x2-_x) + Cos(_angle)*(y2 - _y)  // Sama tässä

    x3  = _x  - _hsize / 2                // vas ala
    y3  = _y  + _vsize / 2
    xx3 = _x + Cos(_angle)*(x3-_x) - Sin(_angle)*(y3 - _y)
    yy3 = _y + Sin(_angle)*(x3-_x) + Cos(_angle)*(y3 - _y) // Täällä
    
    x4  = _x  + _hsize / 2                // oik ala
    y4  = _y  + _vsize / 2
    xx4 = _x + Cos(_angle)*(x4-_x) - Sin(_angle)*(y4 - _y)
    yy4 = _y + Sin(_angle)*(x4-_x) + Cos(_angle)*(y4 - _y) // Ja täällä

    //trifiller(xx1 , yy1 , xx2 , yy2 , xx3 , yy3 )
    //trifiller(xx2 , yy2 , xx3 , yy3 , xx4 , yy4 )

	Line xx1,yy1,xx2,yy2  // Lisäksi vielä piirretään ensin vasemmasta yläkulmasta oikeaan yläkulmaan,
    Line xx2,yy2,xx4,yy4  // sitten oikeasta yläkulmasta oikeaan alakulmaan
    Line xx4,yy4,xx3,yy3  // oikeasta alakulmasta vasempaan alakulmaan
    Line xx3,yy3,xx1,yy1  // ja lopuksi vielä vasemmasta alakulmasta vasempaan yläkulmaan

EndFunction
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 »

Tässäpä minun ratkaisuni neliön piirtämiseen:
Polygon() piirtää säännöllisen monikulmio ja täyttöä varten on mukana atomimallin trifilleri. Mukana myös kiva pikku esimerkkiohjelma.

Code: Select all

SCREEN 800,600

Repeat
	SetWindow "" + FPS()
	
	a = WrapAngle(a + 1)
	
	Lock
		For i = 0 To 3
			Polygon(400 + 150 * Cos(i * 90 + a),300 + 150 * Sin(i * 90 + a),a,80,4,1)
		Next i
	Unlock
	
	DrawScreen
Forever

Function Polygon(x,y,angle#,radius,corners,fill=0)
	cornerAngle# = 360.0 / corners
	
	lastX = x + Cos(angle) * radius
	lastY = y - Sin(angle) * radius
	
	For i = 1 To corners
		tmpX = x + Cos(angle + i * cornerAngle) * radius
		tmpY = y - Sin(angle + i * cornerAngle) * radius
			
		Line lastX,lastY,tmpX,tmpY
		
		If fill
			Triangle(x,y,lastX,lastY,tmpX,tmpY,1)
		EndIf
			
		lastX = tmpX
		lastY = tmpY
	Next i
EndFunction

Function Triangle(x1,y1,x2,y2,x3,y3,fill=0) 'by atomimalli

    Line x1,y1,x2,y2
    Line x2,y2,x3,y3
    Line x3,y3,x1,y1

    If fill = True Then
        If y2<y1 Then 'jos p2 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y2
            y2=tmp
            
            tmp=x1
            x1=x2
            x2=tmp
        EndIf
        
        If y3<y1 Then 'jos p3 on ylempänä kuin p1 vaihdetaan niiden paikkaa
            tmp=y1
            y1=y3
            y3=tmp
            
            tmp=x1
            x1=x3
            x3=tmp
        EndIf
        
        If y3<y2 Then 'jos p3 on ylempänä kuin p2 vaihdetaan niiden paikkaa
            tmp=y2
            y2=y3
            y3=tmp
            
            tmp=x2
            x2=x3
            x3=tmp
        EndIf
        
        'pisteet ovat nyt järjestyksessä
        'ylhäältä alas p1(x1,y1), p2(x2,y2), p3(x3,y3)
        dy1=y2-y1'pystysuora matka p1:sta p2:seen
        dx1=x2-x1'vaakasuora matka p1:sta p2:seen
        dy2=y3-y1'pystysuora matka p1:sta p3:meen
        dx2=x3-x1'vaakasuora matka p1:sta p3:meen
        
        If dy1 Then 'jos kolmion yläosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion yläosassa(p1-p2)
            For i = y1 To y2
                'lasketaan seuraava x-koordinaatti p1:stä p2:seen
                ax=x1+((i-y1)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
        
        dy1=y3-y2'pystysuora matka p2:sta p3:meen
        dx1=x3-x2'vaakasuora matka p2:sta p3:meen
        
        If dy1 Then 'jos kolmion alaosa on pidempi kuin 0
            'käydään läpi kaikki vaakaviivat kolmion alaosassa(p2-p3)
            For i = y2 To y3
                'lasketaan seuraava x-koordinaatti p2:stä p3:meen
                ax=x2+((i-y2)*dx1)/dy1
                'lasketaan seuraava x-koordinaatti p1:stä p3:meen
                bx=x1+((i-y1)*dx2)/dy2
                Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
            Next i
        EndIf
    EndIf
EndFunction
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2011)

Post by koodaaja »

Laatikoista kun innostuttiin niin pistänpä vielä jollekulle aikanaan väsäämäni piirtofunktion, jossa ei kutsuta trigonometrisiä funktioita miljoonaa kertaa :)

Code: Select all

Function drawbox(x, y, w, h, ang#)
    cosa# = Cos(ang#)
    sina# = Sin(ang#)
    cw = cosa*w/2.0: ch = cosa*h/2.0: sw = sina*w/2.0: sh = sina*h/2.0
    Line x + cw - sh, y + sw + ch, x - cw - sh, y - sw + ch
    Line x - cw - sh, y - sw + ch, x - cw + sh, y - sw - ch
    Line x - cw + sh, y - sw - ch, x + cw + sh, y + sw - ch
    Line x + cw + sh, y + sw - ch, x + cw - sh, y + sw + ch
EndFunction

w = 40
h = 30

Repeat
    w = w + (RightKey()-LeftKey())
    h = h + (UpKey()-DownKey())
    ang = wrapangle(ang + (MouseDown(2)-MouseDown(1)))
    
    drawbox(MouseX(), MouseY(), w, h, ang)
    DrawScreen
Forever
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2011)

Post by esa94 »

Eikös Lock + Box ollut nopein tapa piirtää vaaka- ja pystysuoria viivoja?
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2011)

Post by koodaaja »

Ei toki, lock + box ei piirrä näytölle niin mitään. Lock + line on jonkun verran nopeampi kuin normaalisti box, sitä kannattaa käyttää jos tavoitteena on olla kovin nopea.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2011)

Post by esa94 »

koodaaja wrote:Ei toki, lock + box ei piirrä näytölle niin mitään. Lock + line on jonkun verran nopeampi kuin normaalisti box, sitä kannattaa käyttää jos tavoitteena on olla kovin nopea.
Jaa.

Box oli kai kuitenkin lukitsemattomana sitten nopeampi kuin muut?
User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo »

Sly_Jack0 wrote:Älä koskaan lataa mitään silmukassa!

Code: Select all

map = LoadMap("Rata.til","Default.bmp")
ohjaamo = LoadObject("uko.bmp",5)

Repeat
    DrawScreen
Forever 
EDIT:

Oma kysymys: Miten toteutan ATan2-funktion CB:llä? Googlasin ja kokeilin muutamia eri lähestymistapoja, mutta en saanut toimimaan.

Kokeilin koodia mutta ei toiminut :(
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

Laurenzo, suosittelen käymään kaikki oppitunnit (paina f8) läpi järjestyksessä, ja lukemaan ne huolella.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
Noun
Newcomer
Posts: 19
Joined: Sun May 08, 2011 8:17 pm
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Noun »

Liekö tätä kyselty aiemmin, mutta onko kenelläkään tuota Marcoderin RainEngineä tallessa? Olin ladannut sen joskus muinoin, mutta menetin sen kiintolevyvainaani mukana. Tuo topiikissa oleva latauslinkki ei enää nykyään toimi.
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2011)

Post by MetalRain »

Noun wrote:Liekö tätä kyselty aiemmin, mutta onko kenelläkään tuota Marcoderin RainEngineä tallessa?
On. Tässä tosin erityisesti kannattaa hyödyntää viivojen piirtoa lukittuun ruutupuskuriin. Eli muokkaamalla RainEnginen koodista rivejä 69 ja 115 poistamalla ehtolauseen ja sallimalla ruudun lukitus ja avaus myös viivatyyppisillä pisaroilla sain itse pisaroiden määrän kasvatettua 1700:sta 3300:aan ruudunpäivitysnopeuden pysyessä 60:ssä.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex »

mitä ihmettä on tekeillä kun yritän etsiä koodista mavin syytä makeerrorin avulla niin tulee ensin error makeerrorista ja kun klikkaan ok niin tulee mav :?:
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

timpe99 wrote:mitä ihmettä on tekeillä kun yritän etsiä koodista mavin syytä makeerrorin avulla niin tulee ensin error makeerrorista ja kun klikkaan ok niin tulee mav :?:
Etsi mavin syytä ennemmin setwindowilla. Laitat erilaisia setwindoweita kaikkiin kohtiin, ja mavin aiheuttaja on viimeisen näkyvän setwindowin ja sitä seuraavan setwindowin välissä.
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Tyhmät kysymykset (I/2011)

Post by ItzRaines »

Ajattelin taas aloittaa vanhan projun jatkoa ja muistinkin, että se kaatuu siihen mysteeri maviin.
Ei joku millään viittis selittää tuon mavin etsinnän alkeita, että pääsisin etiäppäin.
Laitan nyt vie koodinkin.

Code: Select all

SCREEN 800,600,0,1
FrameLimit 80
playerpoints = 0
Playerhealth=100
suit=100
clip=8
font = LoadFont("arial",30,1,0)
SetFont font

// Luodaan tyyppikokoelma ammuksia varten
Type BULLETS
    Field obj
End Type

// Ladataan media
Gosub LoadMedia

// Määritetään tyyppikokoelma vihollisille ja luodaan pari vihollista
Type ENEMIES
    Field obj
    Field energy
End Type
Gosub MakeEnemies

/////// PÄÄSILMUKKA ///////
Repeat
    Gosub CheckButtons
    Gosub EnemyAI
    Gosub CheckBullets
    Gosub DrawGUI
       
    // Siirretään kameraa pelaajan mukana
    CloneCameraPosition player
    
    If playerhealth=<0 Then
        playerhealth=0
    EndIf
    
    If suit=<0 Then
        suit=0
    EndIf
    
    Color cbBlackSkin
    Text 280,564,"FPS:"+FPS()
    
    Color cbBlackSkin : Text 280,468, playerpoints
    Color cbBlackSkin : Text 560,468,"Health: "+playerhealth 
    Color cbBlackSkin : Text 560,500,"Suit: "+suit   
    Color cbBlackSkin : Text 450,564,"Clip: "+clip
     
    DrawScreen

Until EscapeKey()

/////// ALIOHJELMAT ///////
// Aliohjelma jossa ladataan pelissä tarvittava media
LoadMedia:
    // Ladataan kartta ja animoidaan se
    croshair = LoadObject("media/crosshair.bmp") 
    ShowMouse crosshair
    
    map = LoadMap("media/finalbeta.til", "media/Tileset.bmp")
    
    colt = LoadImage("media/colt.bmp")
    
    screenbox = LoadImage("media/screenbox.bmp")
   
    // Ladataan panosobjektin grafiikat ja piilotetaan objekti
    bulletobject = LoadObject("Media\bullet.bmp", 360)
    ShowObject bulletobject, OFF
   
    // Ladataan pelaaja ja asetetaan törmäyksentunnistus kartan seinien ja pelaaja välille
    player = LoadObject("Media\Player_Colt.bmp", 360)
    SetupCollision player,map,2,4,2
    PositionObject player, 120,30
    PointObject player,crosshair
    
    // Ladataan vihollinen ja piilotetaan objekti
    enemyobject = LoadObject("Media\Enemy_Bar1918.bmp", 360)
    ShowObject enemyobject, OFF

    coltreload = LoadSound ("media\Colt_reload.wav")
    shot = LoadSound("Media\colt_shot.wav")
    scream = LoadSound("Media\scream1.wav")
Return


// Aliohjelma joka tarkistaa näppäinpainallukset
CheckButtons:
    If KeyDown(17) Then MoveObject player,3
    If KeyDown(31) Then MoveObject player,-3
    If KeyDown(30) Then TurnObject player,6
    If KeyDown(32) Then TurnObject player,-6
    
    
    // Tarkistetaan painetaanko ampumisnäppäintä ja jos,
    // niin luodaan ammus ja törmäystunnistus sille
    If MouseHit(1) And clip=>1 Then
        clip=clip-1
        PlaySound shot
        blt.BULLETS = New(BULLETS)
        blt\obj = CloneObject(bulletobject)
        CloneObjectPosition blt\obj, player
        CloneObjectOrientation blt\obj, player
        MoveObject blt\obj,15
        SetupCollision blt\obj,map,2,4,1
        ResetObjectCollision blt\obj
    EndIf
        
    
    If KeyHit(cbkeyr) Then
        clip=8
        PlaySound coltreload 
    EndIf
If clip=<0 Then clip=0
Return

// Aliohjelma, jossa tehdään viholliselle alkeellinen tekoäly
EnemyAI:
  For enem.ENEMIES = Each ENEMIES
        // Tarkistetaan näkeekö vihollisobjekti pelaajaobjekti ja
        // jos näkee niin aloitetaan liikuttamaan pelaajaa kohti
        If ObjectSight(enem\obj,player) Then
            PointObject enem\obj, player
            EndIf
        If ObjectsOverlap (enem\obj,player) Then 
            playerhealth = playerhealth -2
            suit = suit -5
        EndIf    
    Next enem
Return

// Aliohjelma, jossa läpikäydään ammukset

CheckBullets:
    For blt.BULLETS = Each BULLETS
        MoveObject blt\obj, 50
        For enem.ENEMIES = Each ENEMIES
            // Tarkistetaan osuuko ammus viholliseen
            If ObjectsOverlap(blt\obj, enem\obj, 2) Then
                deleteobj = 1
                enem\energy = enem\energy - 40
                playerpoints = playerpoints + 100
            EndIf
        Next enem
        bulcollisions = CountCollisions(blt\obj)
        For i = 1 To bulcollisions
            // Tarkistetaan onko ammus osunut seinään
            If GetCollision(blt\obj, i) > 1 Then deleteobj = 1
        Next i
        If deleteobj = 1 Then
            DeleteObject blt\obj
            Delete blt
            deleteobj = 0
        EndIf
    Next blt
Return

// Aliohjelma jossa piirretään "käyttöliittymä"
DrawGUI:
    DrawGame
    DrawToWorld ON
    // Käydään viholliset läpi
    For enem.ENEMIES = Each ENEMIES
        PosX = ObjectX(enem\obj) - (ObjectSizeX(enem\obj)/2)
        PosY = ObjectY(enem\obj) + ObjectSizeY(enem\obj)
        EnWidth = enem\energy / 3
        Color cbWhite
        Box PosX,PosY,33,6
        Color cbBlue
        Box PosX+1,PosY-1,EnWidth-2,4
        If enem\energy <= 0 Then
            // Jos energia nollassa, niin toistetaan huuto ja poistetaan vihollistyyppi
            PlaySound scream,20
            DeleteObject enem\obj
            Delete enem
        EndIf
    Next enem
    DrawToWorld OFF
   
    // Kirjoitetaan muuttujat näytölle 
    
    DrawImage colt,31,466
    DrawImage screenbox,0,452
Return

// Aliohjelma, jossa määritetään viholliset ja niiden energia
MakeEnemies:
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,100,-500
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
   
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,100,500
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
    
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,-500,100
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
   
    enem.ENEMIES = New(ENEMIES)
    enem\obj = CloneObject(enemyobject)
    PositionObject enem\obj,500,100
    SetupCollision enem\obj,map,2,4,1
    SetupCollision enem\obj,player,2,2,2
    SetupCollision player,enem\obj,2,2,2
    ResetObjectCollision enem\obj
    enem\energy = 100
    
Return
Niin ja taisi olla myös niin, että crosshairin käyttö hiiren tilalla ei ole minulta vielä kertaakaan onnistunut, joten siinä voi olla kans joitain virheitä. En muistaakseni saanut sitä tässä pelissä toimimaan, kun viimeksi yritin.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (I/2011)

Post by TheFish »

ItzRaines wrote:Ajattelin taas aloittaa vanhan projun jatkoa ja muistinkin, että se kaatuu siihen mysteeri maviin.
Ei joku millään viittis selittää tuon mavin etsinnän alkeita, että pääsisin etiäppäin.
Laitan nyt vie koodinkin.

Code: Select all

...koodia...
Niin ja taisi olla myös niin, että crosshairin käyttö hiiren tilalla ei ole minulta vielä kertaakaan onnistunut, joten siinä voi olla kans joitain virheitä. En muistaakseni saanut sitä tässä pelissä toimimaan, kun viimeksi yritin.
Kuten chaosworm sanoi juuri edellisessä viestissä, kokeile laittaa setwindow komentoja sinne tänne (eri tekstillä tietysti). Esim.

Code: Select all

Repeat
    setwindow "silmukan alku / checkbuttons" 
    Gosub CheckButtons
    setwindow "enemyai" 
    Gosub EnemyAI
    setwindow "checkbullets" 
    Gosub CheckBullets
    setwindow "drawgui" 
    Gosub DrawGUI
    setwindow "loput..." 
    // Siirretään kameraa pelaajan mukana
    CloneCameraPosition player
    
    If playerhealth=<0 Then
        playerhealth=0
    EndIf
    
    If suit=<0 Then
        suit=0
    EndIf
    
    Color cbBlackSkin
    Text 280,564,"FPS:"+FPS()
    
    Color cbBlackSkin : Text 280,468, playerpoints
    Color cbBlackSkin : Text 560,468,"Health: "+playerhealth 
    Color cbBlackSkin : Text 560,500,"Suit: "+suit   
    Color cbBlackSkin : Text 450,564,"Clip: "+clip
     
    DrawScreen

Until EscapeKey()
Sitten voit ruveta etsimään virhettä viimeisen näkyvissä olevan setwindowin ja sitä seuraavan välistä. Elikkä jos näkyviin jää "checkbullets", virhe on todennäköisesti CheckBullets aliohjelman sisällä.

Kursorista sen verran, että setmouse ottaa parametrinä kuvan, ei objektia.
CoolBasic henkilökuntaa
Kehittäjä
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2011)

Post by Wingman »

TheFish wrote:Kursorista sen verran, että setmouse ottaa parametrinä kuvan, ei objektia.
Jos haluaa hiireksi jonkin objektin (näin saa esim. pelihahmon kääntymään helposti hiirtä kohti), tässä on yksi tapa:

Code: Select all

hiiri=loadobject(<polku>)
showmouse off
repeat
    positionobject hiiri, mousewx(),mousewy()
    //pelin/ohjelman koodi
forever
- - - -
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2011)

Post by naputtelija »

Chaosworm wrote:
timpe99 wrote:mitä ihmettä on tekeillä kun yritän etsiä koodista mavin syytä makeerrorin avulla niin tulee ensin error makeerrorista ja kun klikkaan ok niin tulee mav :?:
Etsi mavin syytä ennemmin setwindowilla. Laitat erilaisia setwindoweita kaikkiin kohtiin, ja mavin aiheuttaja on viimeisen näkyvän setwindowin ja sitä seuraavan setwindowin välissä.
Itse etsin mavia AddTextillä. Tosin kiva kun nyt huomasin tuollaisenkin tavan... ei tarvitsisi DrawScreeniä.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Tyhmät kysymykset (I/2011)

Post by ItzRaines »

No tuo setwindow ei oikein toimi, kun heti ohjelma käynnistettäessä tulee mav. No se ei just haittaa, koska korjasin tuon crosshairin käytön kiitos wingmanin niin ohjelma rupes pelittämään. Eli syy oli ilmeisesti virheellisessä kursorin muokkauksessa. :oops:
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (I/2011)

Post by TheFish »

ItzRaines wrote:No tuo setwindow ei oikein toimi, kun heti ohjelma käynnistettäessä tulee mav. No se ei just haittaa, koska korjasin tuon crosshairin käytön kiitos wingmanin niin ohjelma rupes pelittämään. Eli syy oli ilmeisesti virheellisessä kursorin muokkauksessa. :oops:
Pakko vielä huomauttaa, että se mavi ei (hyvin suurella todennäköisyydellä) tule heti ohjelman käynnistyessä. Se tulee jollain rivillä joka suoritetaan lähellä ohjelman alkua, ja näin ollen sinun on täysin mahdollista laittaa sinne setwindoweja. Se, että minä laitoin tuohon esimerkkiin vain pääloopin ei tietenkään tarkoita, että et voisi laittaa niitä muuallekkin.
CoolBasic henkilökuntaa
Kehittäjä
User avatar
Noun
Newcomer
Posts: 19
Joined: Sun May 08, 2011 8:17 pm
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Noun »

Miten saisin ohjelman etsimään tilekartalta jokaisen ruudun jonka datakerroksessa on vaikkapa 1 ja asettamaan siihen tyypeillä luodun objektin?
User avatar
hannes98
Newcomer
Posts: 16
Joined: Sat May 08, 2010 10:38 am

Re: Tyhmät kysymykset (I/2011)

Post by hannes98 »

Noun wrote:Miten saisin ohjelman etsimään tilekartalta jokaisen ruudun jonka datakerroksessa on vaikkapa 1 ja asettamaan siihen tyypeillä luodun objektin?
vaikka näin

Code: Select all

'Katsotaan silmukoilla kartta läpi
For xx = 1 To MapWidth()
    For yy = 1 To MapHeight()
        'jos tilen DATA-arvo = 1 niin
        If GetMap2(3, xx, yy) = 1 Then
            'luodaan uusi jäsen kokoelmaan
            tyyppi.luokka = New(luokka)
            'laitetaan jäsenelle hahmo
            tyyppi\obj = CloneObject(jokuobjekti)
            'lasketaan kohta johon objekti laitetaan
            wx = ObjectSizeX(kartta) / -2 + ObjectX(kartta)
            wy = ObjectSizeY(kartta) / 2 + ObjectY(kartta)
            'tilen koko on tässä 32x32
            'laitetaan objekti ihan keskelle tileä
            wx = wx + 16
            wy = wy - 16
            'siirretään objekti tileä lähemmäs
            wx = wx + (xx - 1) * 32
            wy = wy - (yy - 1) * 32
            'siirretään objekti
            PositionObject tyyppi\obj, wx, wy
        EndIf
    Next yy
Next xx
Hahaa!!! Tuhlasit elinaikaasi tyhmän viestini lukemiseen... :D

Projektit:
Locked