Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
mokkeri
Member
Posts: 84
Joined: Sat Apr 05, 2008 9:22 pm

Re: Tyhmät kysymykset

Post by mokkeri » Fri Apr 18, 2008 6:37 pm

Grandi wrote:

Code: Select all

    ShowMouse OFF
    cursor = LoadObject("media/cursor.bmp")
    While True
        ScreenPositionObject cursor,MouseX(),MouseY()
        DrawScreen 
    Wend 
Kiitti! Heti sain apua :)
asd

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Tyhmät kysymykset

Post by nevssons » Fri Apr 18, 2008 6:57 pm

Grandi wrote:

Code: Select all

    ShowMouse OFF
    cursor = LoadObject("media/cursor.bmp")
    While True
        ScreenPositionObject cursor,MouseX(),MouseY()
        DrawScreen 
    Wend 
Offitopic: Mitä vikaa on repeat - forever silmukassa?
Koodarina kohtalainen, henkilönä vittumainen
Image

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish » Fri Apr 18, 2008 7:31 pm

Ei varsinaisesti mitään, mutta semmoista ei käytetä "kehittyneemmissä" kielissä, joten olettaisin Grandin laittaneen tuon ihan tottumuksesta.
CoolBasic henkilökuntaa
Kehittäjä

User avatar
Sceri
Newcomer
Posts: 18
Joined: Sun Apr 13, 2008 4:06 pm

Re: Tyhmät kysymykset

Post by Sceri » Sun Apr 20, 2008 5:16 pm

Miten saa tehtyy alku valikon silleen että lukee vaikka Aloita ja lopeta ja kun painais aloita peli alkais

Värikäs - ei jaksa kirjautuu

Re: Tyhmät kysymykset

Post by Värikäs - ei jaksa kirjautuu » Sun Apr 20, 2008 6:44 pm

Sceri wrote:Miten saa tehtyy alku valikon silleen että lukee vaikka Aloita ja lopeta ja kun painais aloita peli alkais
tään voi tehä monella tavalla mut tässä on yks tyyli tehä valikko--.

Code: Select all

valinta = 1
    valinnat = 3
    Dim sana$(valinnat)
    sana(1) = "peli"
    sana(2) = "tekijät"
    sana(3) = "lopeta"
    While Not life
        If valinta > 1 And KeyHit(cbkeyup) Then valinta - 1
        If valinta < valinnat And KeyHit(cbkeydown) Then valinta + 1
        For i=1 To valinnat
            If valinta = i Then Color cbred Else Color cbwhite
            Text 100,i*20,sana(i)
        Next i
        If KeyHit(cbkeyreturn) Then
            Select valinta
            Case 1: FrameLimit 40 


ukko = LoadObject("Media\guy.bmp", 72)

ClsColor cbWhite

Repeat


    If LeftKey() Then TurnObject ukko, 5
    If RightKey() Then TurnObject ukko, -5    
    
    If UpKey() Then MoveObject ukko, 2
    If DownKey() Then MoveObject ukko, -2
    
    
    DrawScreen

Forever

            Case 2 'jne...
            Case 3: End
            EndSelect
        EndIf
        DrawScreen 
    Wend 
Laitoin tohon koodin kohtaa Case 1: Liikkuva objecti esimerkin eli siihe case 1 kohtaa tulee peli.
Ole hyvä! :)

Testi

Re: Tyhmät kysymykset

Post by Testi » Sun Apr 20, 2008 7:04 pm

Miksi tämä ei toimi , tein muuttujalla siviilille elämän ja kun ammun sotilaalla siviiliä
se ei kuole , siviilille laitoin elämäksi = 3.
koodini

Code: Select all

Type AMMUS 
    Field obj 
End Type 

SetWindow "testi"

Siviil1=3

FrameLimit 40
Siviili=LoadObject("media\guy.bmp")
PositionObject siviili,-20,20
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF


Repeat

    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

  
    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko            
        reload=5       
    EndIf

    If reload>0 Then reload=reload-1

    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
        EndIf        
    Next luoti

   If ObjectsOverlap(pati,siviili) Then
   Siviil1=Siviil1-1
   DeleteObject pati 
   EndIf 

   If ObjectsOverlap(pati,siviili) And siviil1=0 Then
   DeleteObject siviili
   EndIf 
   
   
    DrawGame
    
    DrawScreen

Until EscapeKey()
Luodit menee siviilin läpi ja se ei kuole :D

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja » Sun Apr 20, 2008 7:13 pm

Katsos, tarkistat törmäyksen masterobjektilla, vaikka se pitäisi tarkistaa klooneilla. Lisäksi, jos yritetään tuhota objektia tai tarkistella sitä tuhoamisen jälkeen, tulee MAV, joten pitää tarkistaa ettei sitä yritetä käsitellä kuolleena.

Code: Select all

Type AMMUS 
    Field obj 
End Type 

SetWindow "testi"

Siviil1=3

FrameLimit 40
Siviili=LoadObject("media\guy.bmp")
PositionObject siviili,-20,20
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF


Repeat

    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

  
    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko            
        reload=5       
    EndIf

    If reload>0 Then reload=reload-1

    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
        EndIf
        If siviil1>0 Then
            If ObjectsOverlap(luoti\obj,siviili) Then
                Siviil1=Siviil1-1
                DeleteObject luoti\obj
                Delete luoti
                If siviil1=0 Then
                    DeleteObject siviili
                EndIf 
            EndIf 
        EndIf
    Next luoti
   
   
    DrawGame
    
    DrawScreen

Until EscapeKey()

User avatar
Mysterius Coder
Active Member
Posts: 133
Joined: Mon Aug 27, 2007 8:13 pm

Re: Tyhmät kysymykset

Post by Mysterius Coder » Wed Apr 23, 2008 5:30 pm

Aloitinpa pitkästä aikaa CB:n parissa värkkäämisen. Kuten arvata saattaa- pienen tauon jälkeen unohtuu asia jos parikin vaikka uutta pitäisi jo opetella. Pienen muistinvirkistyksen jälkeen päätin alkaa harjoittelemaan geometrian hyödyntämistä. Pääsin tehdä sellaisen pinki ponki pelin jossa pallolla on tarkoitus räjäytellä palikoita. Kaikki lähti suht hyvin. Nyt tuli sitten pieni seinä vastaan... Jostain syystä mailan ja pallon välinen törmäys ei toimi kuten seinän. Syy on luultavasti yksinkertainen ja typerä- mutta jostain syystä en nyt huomaa...
(sisennykset ovat vähän niin ja näin- ja ikävä kyllä, kommentteja lisäilen yleensä kun jaksan...eli hyvin harvoin)

Code: Select all

 SCREEN 800,600

 FrameLimit 40

 kartta = LoadMap("Media\marblemap.til","Media\marble.bmp")
 PlayObject kartta,0,0,1

 maila= LoadObject ("media\maila.bmp")
 MaskObject maila,cbmagenta
 ScreenPositionObject maila,400,580
 ObjectRange maila,64,15

 SetupCollision maila,kartta,1,4,2

 pallo = LoadObject ("Media\pallo.bmp",72)

 SetupCollision pallo, kartta,1,4,2
 SetupCollision pallo, maila,1,1,2

 TurnObject pallo,Rand(235,315)

 palloplusx#=Cos(ObjectAngle(pallo))*6
 palloplusy#=Sin(ObjectAngle(pallo))*6


Repeat

  TranslateObject pallo,palloplusx#,palloplusy#
  TurnObject pallo,40

  If CountCollisions(pallo) Then
    angle=CollisionAngle(pallo,1)
      If angle=0 Or angle=180 Then
        palloplusx#= -palloplusx#
      EndIf
      
      If angle=90 Or angle=270 Then
        palloplusy#= -palloplusy#
       EndIf
        TranslateObject pallo,palloplusx#,palloplusy#
  EndIf

  UpdateGame

  ScreenPositionObject maila,MouseX(),580


  DrawGame
   Text 0,0,"Pisteet ja muu paska tänne..."

 DrawScreen
Forever

ÄH unohdin ettei teillä tietenkään ole mediaa X(
Attachments
Uusi Pakattu kansio.zip
(117.41 KiB) Downloaded 147 times
Kyllä minä osaan, mutta kun mieli on tällasen kaaoksen vallassa, niin ei siitä mitään tule.

User avatar
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 5:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi » Sun Apr 27, 2008 7:16 pm

Pitäisi tehdä sellainen systeemi,että voisin kirjoittaa käskyjä consoleen,ja painaa enteriä,niin käsky "tulee käyttöön".
Jostain syystä en saanut sitä toimimaan tekstitiedostolla,ja opentoread ja opentowrite-komennoilla.

Vähän tähän tyyliin:

Code: Select all

Vauhti=0
(kirjoittaa consoleen "Vauhti10")
Ja yhtäkkiä vauhti onkin jo 10:D

Huuda mun ip:tä!

User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Tyhmät kysymykset

Post by TheDuck » Sun Apr 27, 2008 7:45 pm

Olw1 wrote:Pitäisi tehdä sellainen systeemi,että voisin kirjoittaa käskyjä consoleen,ja painaa enteriä,niin käsky "tulee käyttöön".
Jostain syystä en saanut sitä toimimaan tekstitiedostolla,ja opentoread ja opentowrite-komennoilla.

Vähän tähän tyyliin:

Code: Select all

Vauhti=0
(kirjoittaa consoleen "Vauhti10")
Ja yhtäkkiä vauhti onkin jo 10:D

Tein tässä pienen systeemin... En ehtiny kommentoida, yritä selvitä :P

Code: Select all

//kirjoita "vauhti 10"

While Not KeyHit(28)
   command$ = Input("KOMENTO: ")
   DrawScreen
Wend

komento$ = GetWord(command$,1)
parametrit$ = GetWord(command$,2)

//komennot
Select komento$
   Case "vauhti"
      vauhti=HaeParametri(parametrit$,1)
      Print "Komentosi oli vauhti ja ensimmäinen parametri "+vauhti+","
      Print "sekä muuttujan vauhti arvo on nyt "+vauhti
      WaitKey 
   Default 
      Print "Komentoa ei löytynyt!"
      WaitKey 
EndSelect

//Funktiot
Function HaeParametri(jono$,id)
  For i=1 To CountWords(jono$, ",")
    If i=id Then Return GetWord(jono$,i,",")
  Next i
EndFunction 
^^

CodeForever

Re: Tyhmät kysymykset

Post by CodeForever » Sun Apr 27, 2008 8:12 pm

Kannattaako laittaa,että kaikki animaatiot on erikseen potkut,Lyönnit,Vartalo,Pää ja laittaa Koordinaateilla oikeeseen kohtaan ? Kun ennen oli vartalo,pää,jalat,kädet kaikki samassa kuvassa,nyt olisin tekemässä kaikista eri objektit,että toimis paremmin osuuko vihu vai eikö vihu osu potkullaan mun ukkoo... Vai onko muita ehdotuksia ?

User avatar
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 5:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi » Sun Apr 27, 2008 8:14 pm

Sori et oon näin tyhmä mutta miten sovitan tuon koodiini?

Code: Select all

Repeat 
DrawImage ruutu,0,0
TranslateObject hero,vauhti,0
If vauhti>0 Then 
        ShowObject heroright,ON
        hero=heroright
        PlayObject hero,0,4,0.10
        
        ElseIf vauhti<0 Then
        ShowObject heroleft,ON
        ShowObject heroright,OFF 
        hero=heroleft
        PlayObject hero,0,4,0.10 
    Else 
        
        PlayObject hero,0
    EndIf
DrawGame
  
Text 0,30,"X"+MouseX()
Text 0,40,"Y"+MouseY()
Text 0,50,"Vauhti:"+vauhti

        DrawScreen
      
Forever
Huuda mun ip:tä!

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: Tyhmät kysymykset

Post by nevssons » Mon Apr 28, 2008 2:45 pm

miten sais näyttökordinaateilla selville tilen kordinaatit?
Koodarina kohtalainen, henkilönä vittumainen
Image

User avatar
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 5:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi » Mon Apr 28, 2008 4:11 pm

nevssons wrote:miten sais näyttökordinaateilla selville tilen kordinaatit?
Mitä tarkotat?

Tätäkö?
Kun näyttökoordinaatti on (x,y),niin tilekoordinaatti on (a,s)vai? (numerot muuttujia)
Jos kenttä on näyttöä pienempi,niin sen saa selville yksinkertaisella funktiolla,mutta jos se on isompi niin ei taida onnistua.


Sori jos oon pahasti eksyksissä;)
Huuda mun ip:tä!

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x » Mon Apr 28, 2008 6:00 pm

nevssons wrote:miten sais näyttökordinaateilla selville tilen kordinaatit?
Olw1 wrote:Jos kenttä on näyttöä pienempi,niin sen saa selville yksinkertaisella funktiolla,mutta jos se on isompi niin ei taida onnistua.
Onneksi olet väärässä sillä tässäpä tuo funktio, vaikka varmaankin vastaava olisi löytynyt myös sdk:sta.

Code: Select all

SCREEN 1024,768

'Load map and animate it (2 times a second)
map= LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject map,0,0,0.5

'Load the character and setup a collision for it 
guy= LoadObject("Media\soldier.bmp",72)
SetupCollision guy,map,2,4,2

'The game 
Repeat

    'Control the guy
    If LeftKey() Then TurnObject guy,5
    If RightKey() Then TurnObject guy, -5
    If UpKey() Then MoveObject guy,4
    If DownKey() Then MoveObject guy, -4

    'Stick camera to the guy
    CloneCameraPosition guy
    
    DrawGame
    
    Text 0,0,ScreentoMap(MouseX(),map,1)+" "+ScreentoMap(MouseY(),map,2)

    DrawScreen

Until EscapeKey()


Function ScreentoMap(_x,_map,_case)

    Select _case
    
        Case 1
        
            mapx=ObjectX(_map) 
            
            tilewidth=Int(ObjectSizeX(_map)/MapWidth())
           
            screenw=ScreenWidth()
            
            worldx=_x-screenw/2+CameraX()  
            
            If worldx>(mapx-ObjectSizeX(_map)/2) And worldx<(mapx+ObjectSizeX(_map)/2) Then 
            
                tilex= ( (mapx+ObjectSizeX(_map)/2) + worldx ) / tilewidth +1 '- MapWidth()
            Else
                tilex=-1
            EndIf
            
            If tilex<>-1 Then Return tilex Else Return "Kartan ulkopuolella"
            
        Case 2
        
            mapy=ObjectY(_map) 
            tileheight=Int(ObjectSizeY(_map)/MapHeight())
            screenh=ScreenHeight()
            
            worldy=-_x+screenh/2+CameraY()  
            
            If worldy>(mapy-ObjectSizeY(_map)/2) And worldy<(mapy+ObjectSizeY(_map)/2) Then 
            
                tiley=- ( mapy-ObjectSizeY(_map)/2 + worldy ) / tileheight +1
            Else
                tiley=-1
            EndIf
            
            If tiley<>-1 Then Return tiley Else Return "Kartan ulkopuolella"
            
    End Select

End Function  
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
Mr_Noob
Newcomer
Posts: 30
Joined: Tue Aug 28, 2007 1:05 pm
Location: koti
Contact:

Re: Tyhmät kysymykset

Post by Mr_Noob » Tue Apr 29, 2008 7:57 pm

miksiköhän tästä tulee mav? :evil:

Code: Select all

    If ObjectsOverlap(avain,ukko)And die=True Then
        key=1
        die=False
        DeleteObject avain
    EndIf
programmer of DSG wrote:
EDIT:

aika hauska peli, vähän tylsä


User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja » Tue Apr 29, 2008 8:14 pm

Mr_Noob wrote:miksiköhän tästä tulee mav? :evil:

Code: Select all

    If ObjectsOverlap(avain,ukko)And die=True Then
        key=1
        die=False
        DeleteObject avain
    EndIf
Ensinnä: puuttuuko jompikumpi objekteista? Toiseksi: die=True ensin, sitten vasta ObjectsOverlap. Nykyisellään tulee tilanne, jossa tarkistetaan tuhotun objektin kanssa päällekkäisyyttä, mistä mav seuraa.

guest mr_noob

Re: Tyhmät kysymykset

Post by guest mr_noob » Tue Apr 29, 2008 9:53 pm

Kumpikaan objecteista ei puutu. Jos oikein käsitin niin näin:

Code: Select all

   if die=True and Objectsoverlap(avain,ukko) Then
       key = 1
       Deleteobject avain
       die=false
   endif
Mutta tuo ei toimi.. :?:

User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez » Wed Apr 30, 2008 8:51 am

Ihan sama miten päin sen tarkistuksen tekee, mav tulee koska objektia avain ei ole. Katsopas:
Kierros 1:
- Tarkastetaan 'die' (on true), tarkastetaan objektien päällekkäisyys.
- Key = 1, avain tuhotaan, die = false.
Kierros 2:
- Tarkastetaan 'die' (tällä kertaa false). And-operaattori tarkastetaan silti, oli se die mikä vain. Eli ObjectsOverlappia kutsutaan. Avainta ei ole -> mav.

Toimiva koodi:

Code: Select all

If die = True Then
    If ObjectsOverlap( avain, ukko ) Then
        key = 1
        DeleteObject avain
        die = False
    EndIf
EndIf
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

Sepez
Newcomer
Posts: 2
Joined: Fri May 02, 2008 10:31 pm

Re: Tyhmät kysymykset

Post by Sepez » Wed May 07, 2008 12:01 am

Nyt olisi semmoinen ongelma, eli tarkoitus olisi tehdä systeemi, että kun inputtiin kirjoitetaan joku "komento", niin ohjelma menisi kyseiseen kohtaan ohjelmassa. Mutta CB vain herjaa; "Label 'y$' not found at line 6". Jotain olen kuitenkin saanut väännettyä kasaan:

Code: Select all

Repeat
x$=Input(">>")
If x$=net Then 
y$=net
If KeyHit(28) Then
Goto y$
EndIf
EndIf
DrawScreen
Forever
net:
Repeat
Print "Sending response to server..."
DrawScreen
Forever
Kyllä sinne varmaan CloseInputtia sun muuta pitää heittää sekaan, mutta kun ei tiedä minne. Kiitos ajastanne jo etukäteen.

Locked