Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Misthema »

En löytänyt haulla tähän asiaan tuloksia, joten heitänpä sen tänne:

Eli miten on mahdollista saada kahdella peräkkäisellä SCREEN -komennolla 320x240 ruutu venytettyä 800x600 resoluution sisään ja kokoruutuun? Nyt en siis ole haluamassa 320x240 ikkunaa venytettynä "kokoruutuun" reunoineen kaikkineen, vaan samaan tapaan kun SCREEN -komennon kokoruututila.
Eli siis grafiikka olisi silti piirretty 320x240 ruudun sisään, mutta venytetty sitten 800x600 resoluution kokoruutuun.
Minua on tässä kerran neuvottu ja sainkin sen toimimaan, mutta en enää muista miten sen tein... ;)
Dewe
Newcomer
Posts: 18
Joined: Tue Dec 01, 2009 8:53 pm
Location: Kaskinen, Pohjanmaa

Re: Tyhmät kysymykset (I/2010)

Post by Dewe »

Elikkä törmäsin ilmoitukseen "Code 88 Cant find missing next ja stuckture start block at line 90" kun laitoin toisenkin aseen eri näppäimelle. Voisko joku kertoa että mikä koodissani mahdollisesti on vikana vai puuttuuko siitä jotain tärkeää. :? Voi olla että ongelma oli tyhmä mutta en ny mikään ammattilainenkaan vielä ole. 8-)

Code: Select all

FrameLimit 80 
SCREEN 800,600

ääniAmmu = LoadSound ("Files\Gun_fire1.wav")
ääniammu2 = LoadSound ("Files\Gun_fire2.wav")
kartta = LoadMap("--------testmap.til","Space.bmp")
PlayObject kartta,0,0,1

SetWindow "-------"

Dim AMMUS_ELOSSA(100) 
Dim AMMUS_OBJ(100)


Alus=LoadObject("Files/Kopio_Raketti.bmp",300)
pati=LoadObject("Files/Ammus_1.bmp", 300)
pati2=LoadObject ("Files\Ammus_2.bmp", 300)
RotateObject Alus,90
PositionObject Alus,-150,100


ShowObject pati,OFF
ShowObject pati2,OFF



Color cbOrange
AddText "------------"

Repeat
  
  
If LeftKey() Then TurnObject Alus,5
If RightKey() Then TurnObject Alus,-5
If UpKey() Then MoveObject Alus,10


If ObjectX(Alus)<-3700 Then PositionObject Alus,-3700,ObjectY(Alus)
If ObjectX(Alus)>3700 Then PositionObject Alus,3700,ObjectY(Alus)
If ObjectY(Alus)<-3700 Then PositionObject Alus,ObjectX(Alus),-3700
If ObjectY(Alus)>3700 Then PositionObject Alus,ObjectX(Alus),3700
    
   
If KeyDown(cbKeyLControl) And reload=0 Then    
PlaySound ääniAmmu,50
Gosub LisääAmmus 

If KeyDown(cbKeyLAlt) And reload=0 Then    
PlaySound ääniAmmu2,50
Gosub LisääAmmus 

EndIf
  
If reload>0 Then reload=reload-1

Gosub PäivitäAmmukset

   
DrawGame
    
CloneCameraPosition Alus
DrawScreen

Repeat
Until EscapeKey()
End
'-----------------------------------------------
LisääAmmus:
    
For i=1 To 100
If AMMUS_ELOSSA(i)=OFF Then
AMMUS_ELOSSA(i)=ON
AMMUS_OBJ(i)=CloneObject(pati)

If AMMUS_ELOSSA(i)=OFF Then
AMMUS_ELOSSA(i)=ON
AMMUS_OBJ(i)=CloneObject(pati2)                
           
CloneObjectPosition AMMUS_OBJ(i),Alus
              
CloneObjectOrientation AMMUS_OBJ(i),Alus
            
reload=4 
          
          
Exit
EndIf
(Tässä on rivi 90) Next i
Return 
'-----------------------------------------------
PäivitäAmmukset:
 
    
   
For i=1 To 100
If AMMUS_ELOSSA(i) Then
MoveObject AMMUS_OBJ(i),18
            
         
If ObjectX(AMMUS_OBJ(i))<-4000 Or ObjectX(AMMUS_OBJ(i))>4000 Or ObjectY(AMMUS_OBJ(i))<-4000 Or ObjectY(AMMUS_OBJ(i))>4000 Then
            
                
DeleteObject AMMUS_OBJ(i)
                
            
AMMUS_ELOSSA(i)=OFF
EndIf
            
EndIf
Next i
Return 

Code: Select all

Not enough disc space. Delete windows?
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by tuhoojabotti »

Dewe wrote:Elikkä törmäsin ilmoitukseen "Code 88 Cant find missing next ja stuckture start block at line 90" kun laitoin toisenkin aseen eri näppäimelle. Voisko joku kertoa että mikä koodissani mahdollisesti on vikana vai puuttuuko siitä jotain tärkeää. :? Voi olla että ongelma oli tyhmä mutta en ny mikään ammattilainenkaan vielä ole. 8-)

Code: Select all

koodia.

Code: Select all

    FrameLimit 80
    SCREEN 800,600

    ääniAmmu = LoadSound ("Files\Gun_fire1.wav")
    ääniammu2 = LoadSound ("Files\Gun_fire2.wav")
    kartta = LoadMap("--------testmap.til","Space.bmp")
    PlayObject kartta,0,0,1

    SetWindow "-------"

    Dim AMMUS_ELOSSA(100)
    Dim AMMUS_OBJ(100)


    Alus=LoadObject("Files/Kopio_Raketti.bmp",300)
    pati=LoadObject("Files/Ammus_1.bmp", 300)
    pati2=LoadObject ("Files\Ammus_2.bmp", 300)
    RotateObject Alus,90
    PositionObject Alus,-150,100


    ShowObject pati,OFF
    ShowObject pati2,OFF



    Color cbOrange
    AddText "------------"

    Repeat
     
     
    If LeftKey() Then TurnObject Alus,5
    If RightKey() Then TurnObject Alus,-5
    If UpKey() Then MoveObject Alus,10


    If ObjectX(Alus)<-3700 Then PositionObject Alus,-3700,ObjectY(Alus)
    If ObjectX(Alus)>3700 Then PositionObject Alus,3700,ObjectY(Alus)
    If ObjectY(Alus)<-3700 Then PositionObject Alus,ObjectX(Alus),-3700
    If ObjectY(Alus)>3700 Then PositionObject Alus,ObjectX(Alus),3700
       
       
    If KeyDown(cbKeyLControl) And reload=0 Then   
    PlaySound ääniAmmu,50
    Gosub LisääAmmus
    EndIf
    
    If KeyDown(cbKeyLAlt) And reload=0 Then   
    PlaySound ääniAmmu2,50
    Gosub LisääAmmus
    EndIf
     
    If reload>0 Then reload=reload-1

    Gosub PäivitäAmmukset

       
    DrawGame
       
    CloneCameraPosition Alus
    DrawScreen

    //Repeat ylimääränen repeatti?
    Until EscapeKey()
    End
    '-----------------------------------------------
    LisääAmmus:
       
    For i=1 To 100
    If AMMUS_ELOSSA(i)=OFF Then
    AMMUS_ELOSSA(i)=ON
    AMMUS_OBJ(i)=CloneObject(pati)

    If AMMUS_ELOSSA(i)=OFF Then
    AMMUS_ELOSSA(i)=ON
    AMMUS_OBJ(i)=CloneObject(pati2)               
               
    CloneObjectPosition AMMUS_OBJ(i),Alus
                 
    CloneObjectOrientation AMMUS_OBJ(i),Alus
               
    reload=4
             
             
    Exit
    EndIf
    EndIf
    Next i
    Return
    '-----------------------------------------------
    PäivitäAmmukset:

       
       
    For i=1 To 100
    If AMMUS_ELOSSA(i) Then
    MoveObject AMMUS_OBJ(i),18
                
    If ObjectX(AMMUS_OBJ(i))<-4000 Or ObjectX(AMMUS_OBJ(i))>4000 Or ObjectY(AMMUS_OBJ(i))<-4000 Or ObjectY(AMMUS_OBJ(i))>4000 Then
               
                   
    DeleteObject AMMUS_OBJ(i)
                   
               
    AMMUS_ELOSSA(i)=OFF
    EndIf     
    EndIf
    Next i
    Return 
Koodistasi puuttui muutama EndIf ja siellä oli 2 Repeattia, mutta vaan yksi Until. Opettele sisentämään, niin näitä ei synny.
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Dewe
Newcomer
Posts: 18
Joined: Tue Dec 01, 2009 8:53 pm
Location: Kaskinen, Pohjanmaa

Re: Tyhmät kysymykset (I/2010)

Post by Dewe »

Muuten onnistui mutta nyt ei näy ammuksia :?

Code: Select all

Not enough disc space. Delete windows?
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by skorpioni-cb »

Nyt toimii kaappaus, mutta kun olen tiputtanut toisen ja yrittänyt ottaa toista tiputuksen jälkeen hallintaan, niin se tiputettu on taas sama jota hallitsen ei se toinen. Apuva:

Code: Select all

Include "ide\cbJanelas.cb"
    'Pääohjelma

    SCREEN 400,300,0,0

    FrameLimit 40

    Type RAKETIT
       Field obj
    EndType
    Type ASTEROIDIT
       Field obj
       Field hp
    EndType
    Type VIHUT
       Field obj
       Field hp#
       Field id
    EndType

    Const TUTKA_X=225
    Const TUTKA_Y=100
    Const TUTKA_KOKO=50

    maksimi=2

    Global hp

    hp#=100.0

    kamera=MakeImage(200,150)

    space=MakeImage(400,300)

    DrawToImage space

    For i=1 To 100

        Dot Rand(0,399),Rand(0,299)

    Next i

    DrawToScreen

    world=MakeObjectFloor()

    PositionObject world,0,0,-500

    PaintObject world,space

    sina=LoadObject("media\sinä.bmp",72)

    energia=LoadObject("media\energia.bmp")

    hiiri=LoadImage("media\hiiri.bmp")

    meteori=LoadObject("media\meteori.bmp")
    ShowObject meteori,OFF
    pu=LoadObject("media\power-up.bmp")

    ma=LoadObject("media\musta-aukko.bmp",72)

    raketti=LoadObject("media\Kranaatti.jpg")
    ShowObject raketti,OFF
    vihu=LoadObject("media\vihu.bmp",72)
    ShowObject vihu,OFF
    pää=LoadObject("media\päävihu.bmp")
    h=MakeObject()
    n=2
    Repeat

        ClsColor 56,62,184

    ShowMouse hiiri
    If pause Then

    Else

    PositionObject h,MouseWX(),MouseWY()

        Gosub tarkista

        Color 255,255,255

        Text 251,9,"hp: "+hp

        PositionObject pää,Int(750.1994),Int(-17.1)

        If LeftKey() Then TurnObject sina,5
        If RightKey() Then TurnObject sina, -5
        If UpKey() Then MoveObject sina,n
        If DownKey() Then MoveObject sina,-n

        If KeyDown(42) Or KeyDown(54) Then n=8 Else n=2

    If KeyHit(cbkeyspace) And reload=0 Then
       
        newRaketti.RAKETIT= New(RAKETIT)
        newRaketti\obj=CloneObject(raketti)
        CloneObjectPosition newRaketti\obj,sina
        CloneObjectOrientation newRaketti\obj,sina
         
        MoveObject newRaketti\obj,40
         
        reload=4
    EndIf
       
    i=0
       
    For lVihu.VIHUT= Each VIHUT
        For iRaketti.RAKETIT= Each RAKETIT

        MoveObject iRaketti\obj,6
        If After(lVihu)<>NULL Then
        If ObjectsOverlap(lVihu\obj,iRaketti\obj,3) Then
          id.VIHUT=lVihu
       EndIf
              If id=lVihu Then
             PositionObject lVihu\obj,ObjectX(h),ObjectY(h)
           EndIf
      EndIf




       i=i+1
       Next iRaketti
    Next lVihu


       
    If reload>0 Then reload=reload-1
       
       Text 248,60,"Ladatut ammukset: "+i
    EndIf   
    If KeyHit(cbkeyP) Then pause=Not pause
        camera(kamera,ObjectX(sina),ObjectY(sina))

            DrawImage kamera,0,0

     

    DrawScreen

    Forever

    Function nappi(Teksti$,x,y,leveys=0,korkeus=0)

      leveys1=leveys
      korkeus1=korkeus
     
      If leveys1=0 Then leveys2=TextWidth(Teksti)
      If korkeus1=0 Then korkeus2=TextHeight(Teksti)
     
       'Napin pohjaväri. EI TEKSTIN VÄRI!
       
       r=getRGB(RED)
       g=getRGB(GREEN)
       b=getRGB(BLUE)
       
       Color r,g,b
       
       If r=0 And g=0 And b=0 Then
       
       r1=255
       
       g1=255
       
       b1=255
       
       Else
         
       r1=0
       
       g1=0
       
       b1=0
       
       EndIf
       
       Box x,y,leveys2,korkeus2
       
       Color r1,r1,r1
       
       Text x,y,Teksti

         If MouseX() >=x And MouseX()<= x+leveys2 And MouseY() >= y And MouseY() <= y+korkeus2 Then
         
           in=True
           
         Else
         
           in=False
           
         EndIf
         
       If in=True And MouseHit(1) Then
       
         painettu=True
       
       Else
       
         painettu=False
         
       EndIf
       
      Return painettu
     
    EndFunction

    Function VähennäHp(maara#)

    hp=hp-maara

    Return hp#

    EndFunction

    Function camera(img,x,y)

    l=ImageWidth(img)
    k=ImageHeight(img)

    UpdateGame

    DrawToImage img
        ClsColor cbblack
        Cls
        PositionCamera x,y
        PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
        DrawGame
    DrawToScreen
    EndFunction
    Luo:
        newVihu.VIHUT= New(VIHUT)
        newVihu\obj=CloneObject(vihu)
        newVihu\hp=4.0
    Return

    Return
    tarkista:
        Nykyinen_maara = 0
    For vihumää.VIHUT = Each VIHUT
        Nykyinen_maara + 1
    Next vihumää
       
        If Nykyinen_maara < Maksimi Then Gosub luo
    Return


EDIT:

Nyt ogelmani on että kun ammus osuu jälkimmäiseen niin se ei tuhoudu eikä hiiri enään hallitse sitä. Koodi:

Code: Select all

Include "ide\cbJanelas.cb"
'Pääohjelma

SCREEN 400,300,0,0

FrameLimit 40

Type RAKETIT
   Field obj
EndType 
Type ASTEROIDIT
   Field obj
   Field hp
EndType
Type VIHUT
   Field obj
   Field hp#
   Field id
EndType 

Const TUTKA_X=225
Const TUTKA_Y=100
Const TUTKA_KOKO=50
 
maksimi=2

Global hp

hp#=100.0

kamera=MakeImage(200,150) 

space=MakeImage(400,300)

DrawToImage space

For i=1 To 100 

    Dot Rand(0,399),Rand(0,299)

Next i
 
DrawToScreen 

world=MakeObjectFloor()

PositionObject world,0,0,-500

PaintObject world,space

sina=LoadObject("media\sinä.bmp",72)

energia=LoadObject("media\energia.bmp")

hiiri=LoadImage("media\hiiri.bmp")

meteori=LoadObject("media\meteori.bmp")
 ShowObject meteori,OFF 
pu=LoadObject("media\power-up.bmp")

ma=LoadObject("media\musta-aukko.bmp",72)

raketti=LoadObject("media\Kranaatti.jpg")
ShowObject raketti,OFF 
vihu=LoadObject("media\vihu.bmp",72)
ShowObject vihu,OFF 
pää=LoadObject("media\päävihu.bmp")
h=MakeObject()
n=2
Repeat 

    ClsColor 56,62,184 

ShowMouse hiiri
If pause Then

Else 

 PositionObject h,MouseWX(),MouseWY()

    Gosub tarkista

    Color 255,255,255

    Text 251,9,"hp: "+hp

    PositionObject pää,Int(750.1994),Int(-17.1)

    If LeftKey() Then TurnObject sina,5
    If RightKey() Then TurnObject sina, -5
    If UpKey() Then MoveObject sina,n
    If DownKey() Then MoveObject sina,-n

    If KeyDown(42) Or KeyDown(54) Then n=8 Else n=2

If KeyHit(cbkeyspace) And reload=0 Then 
   
    newRaketti.RAKETIT= New(RAKETIT)
    newRaketti\obj=CloneObject(raketti)
    CloneObjectPosition newRaketti\obj,sina
    CloneObjectOrientation newRaketti\obj,sina
      
    MoveObject newRaketti\obj,40
      
    reload=4
EndIf 
   
i=0

For lVihu.VIHUT= Each VIHUT
    For iRaketti.RAKETIT= Each RAKETIT

    MoveObject iRaketti\obj,6
    If After(lVihu)<>NULL Then 
    If ObjectsOverlap(lVihu\obj,iRaketti\obj,3) Then 
      id.VIHUT=lVihu
   EndIf 
          If id=lVihu Then 
         PositionObject lVihu\obj,ObjectX(h),ObjectY(h)
         TurnObject lVihu\obj,7
       EndIf 
          
  If MouseHit(1) Then id=0   
   
  EndIf 




   i=i+1
   Next iRaketti
Next lVihu 


   
If reload>0 Then reload=reload-1
   
   Text 248,60,"Ladatut ammukset: "+i
EndIf    
If KeyHit(cbkeyP) Then pause=Not pause
    camera(kamera,ObjectX(sina),ObjectY(sina))

        DrawImage kamera,0,0

  

 DrawScreen

Forever 

Function nappi(Teksti$,x,y,leveys=0,korkeus=0)

  leveys1=leveys
  korkeus1=korkeus
  
  If leveys1=0 Then leveys2=TextWidth(Teksti)
  If korkeus1=0 Then korkeus2=TextHeight(Teksti)
  
   'Napin pohjaväri. EI TEKSTIN VÄRI!
   
   r=getRGB(RED)
   g=getRGB(GREEN)
   b=getRGB(BLUE)
   
   Color r,g,b
   
   If r=0 And g=0 And b=0 Then 
   
   r1=255
   
   g1=255
   
   b1=255
   
   Else
      
   r1=0
   
   g1=0
   
   b1=0
   
   EndIf
   
   Box x,y,leveys2,korkeus2
   
   Color r1,r1,r1
   
   Text x,y,Teksti

     If MouseX() >=x And MouseX()<= x+leveys2 And MouseY() >= y And MouseY() <= y+korkeus2 Then 
     
       in=True 
       
     Else 
     
       in=False 
       
     EndIf 
     
   If in=True And MouseHit(1) Then 
   
     painettu=True
   
   Else 
   
     painettu=False
     
   EndIf 
   
  Return painettu
  
EndFunction 

Function VähennäHp(maara#)

hp=hp-maara

Return hp#

EndFunction 

Function camera(img,x,y)

l=ImageWidth(img)
k=ImageHeight(img)

UpdateGame

DrawToImage img
    ClsColor cbblack
    Cls
    PositionCamera x,y
    PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
    DrawGame
DrawToScreen
EndFunction 
Luo:
    newVihu.VIHUT= New(VIHUT)
    newVihu\obj=CloneObject(vihu)
    newVihu\hp=4.0
Return 

Return 
tarkista:
    Nykyinen_maara = 0
For vihumää.VIHUT = Each VIHUT
    Nykyinen_maara + 1
Next vihumää
    
    If Nykyinen_maara < Maksimi Then Gosub luo
Return 
[/edit]
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
Dewe
Newcomer
Posts: 18
Joined: Tue Dec 01, 2009 8:53 pm
Location: Kaskinen, Pohjanmaa

Re: Tyhmät kysymykset (I/2010)

Post by Dewe »

Elikkä kun ekan aseen lataus on "reload =4" niin millä tavoin saan määritettyä että toisen aseen ammukset eivät lataudu yhtä nopeasti. :? Ja kun sain aiempien ohjeiden mukaisesti aseet toimimaan niin nyt eivät ammukset näy :cry:

Code: Select all

Not enough disc space. Delete windows?
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Dewe wrote:Elikkä kun ekan aseen lataus on "reload =4" niin millä tavoin saan määritettyä että toisen aseen ammukset eivät lataudu yhtä nopeasti. :? Ja kun sain aiempien ohjeiden mukaisesti aseet toimimaan niin nyt eivät ammukset näy :cry:

Code: Select all

Reload2 = 156
Dewe
Newcomer
Posts: 18
Joined: Tue Dec 01, 2009 8:53 pm
Location: Kaskinen, Pohjanmaa

Re: Tyhmät kysymykset (I/2010)

Post by Dewe »

Chaosworm wrote:
Dewe wrote:Elikkä kun ekan aseen lataus on "reload =4" niin millä tavoin saan määritettyä että toisen aseen ammukset eivät lataudu yhtä nopeasti. :? Ja kun sain aiempien ohjeiden mukaisesti aseet toimimaan niin nyt eivät ammukset näy :cry:

Code: Select all

Reload2 = 156
Ei auttanut :?

Code: Select all

Not enough disc space. Delete windows?
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Olisi pitänyt auttaa. Väännetään sitten rautalangasta:

Code: Select all

Reload = 4
Reload2 = 156

Repeat
    
    If MouseHit(1) And Ase = 1 And reload = 0 Then AmmuAseella1()
    If MouseHit(1) And Ase = 2 And reload2 = 0 Then AmmuAseella2()

    Reload -1
    Reload2 -1

Forever
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG »

Chaosworm wrote:Olisi pitänyt auttaa.
Postcounter = Postcounter + 1
Chaosworm wrote: Olisi pitänyt auttaa. Väännetään sitten rautalangasta:

Code: Select all

Reload = 4
Reload2 = 156

Repeat
    
    If MouseHit(1) And Ase = 1 And reload = 0 Then AmmuAseella1()
    If MouseHit(1) And Ase = 2 And reload2 = 0 Then AmmuAseella2()

    Reload -1
    Reload2 -1

Forever
Onko se rautalangasta vääntämistä jos koodi ei ole läheskään toimivaa? Esimerkiksi reloadit menevät pakolta miinuksen puolelle.
Hengität nyt manuaalisesti.
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

DatsuniG wrote:Postcounter = Postcounter + 1
Niinpä niin :roll:.

Editoiminen ei nosta postikountteria, mutta eipä se nosta myöskään viestiketjua. Uuden viestin kirjoittaminen sen sijaan nostaa viestiketjun, joten uusi asia huomataan helpommin. Yritän tässä auttaa ihmisiä, ja jos sinulla on jotain sitä vastaan, voit jättää lukematta kaikki Ongelmat-alueella olevat viestit.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG »

Chaosworm wrote:
DatsuniG wrote:Postcounter = Postcounter + 1
Niinpä niin :roll:.

Editoiminen ei nosta postikountteria, mutta eipä se nosta myöskään viestiketjua. Uuden viestin kirjoittaminen sen sijaan nostaa viestiketjun, joten uusi asia huomataan helpommin. Yritän tässä auttaa ihmisiä, ja jos sinulla on jotain sitä vastaan, voit jättää lukematta kaikki Ongelmat-alueella olevat viestit.
Ei aloittelijoille ole kaikki itsestään selvää, eikä yksittäisen muuttujan postaaminen pakolta soita mitään kelloja.

Code: Select all

FrameLimit 80
SCREEN 800,600

ääniAmmu = LoadSound ("Files\Gun_fire1.wav")
ääniammu2 = LoadSound ("Files\Gun_fire2.wav")
kartta = LoadMap("--------testmap.til","Space.bmp")
Alus=LoadObject("Files/Kopio_Raketti.bmp",300)
pati=LoadObject("Files/Ammus_1.bmp", 300)
pati2=LoadObject ("Files\Ammus_2.bmp", 300)
RotateObject Alus,90
PositionObject Alus,-150,100
ShowObject pati,OFF
ShowObject pati2,OFF
PlayObject kartta,0,0,1

SetWindow "-------"

Dim AMMUS_ELOSSA(100)
Dim AMMUS_OBJ(100,1)

Color cbOrange
AddText "------------"

Repeat
     
    If LeftKey() Then TurnObject Alus,5
    If RightKey() Then TurnObject Alus,-5
    If UpKey() Then MoveObject Alus,10
    
    If ObjectX(Alus)<-3700 Then PositionObject Alus,-3700,ObjectY(Alus)
    If ObjectX(Alus)>3700 Then PositionObject Alus,3700,ObjectY(Alus)
    If ObjectY(Alus)<-3700 Then PositionObject Alus,ObjectX(Alus),-3700
    If ObjectY(Alus)>3700 Then PositionObject Alus,ObjectX(Alus),3700
       
    If KeyDown(cbKeyLControl) And reload=0 Then   
        If weapon = 0 Then 
            PlaySound ääniAmmu,50
        Else
            PlaySound ääniAmmu2,50
        EndIf 
        Gosub LisääAmmus    
    EndIf
    
    If KeyHit(cbKeyReturn) Then Weapon = Not(Weapon)
    If reload>0 Then reload=reload-1
    
    Gosub PäivitäAmmukset
    
    DrawGame
    CloneCameraPosition Alus
    DrawScreen
Until EscapeKey()
End
'-----------------------------------------------
LisääAmmus:
   
For i=1 To 100
    If AMMUS_ELOSSA(i)=OFF Then
        If weapon = 0 Then
            AMMUS_ELOSSA(i)=ON
            AMMUS_OBJ(i,0)=CloneObject(pati)   
            AMMUS_OBJ(i,1) = 4            
            reload=4
        Else 
            AMMUS_ELOSSA(i)=ON
            AMMUS_OBJ(i,0)=CloneObject(pati2)   
            AMMUS_OBJ(i,1) = 12    
            reload = 20
        EndIf
        CloneObjectPosition AMMUS_OBJ(i),Alus  
        CloneObjectOrientation AMMUS_OBJ(i),Alus 
        Exit
    EndIf
Next i
Return
'-----------------------------------------------
PäivitäAmmukset:

For i=1 To 100
    If AMMUS_ELOSSA(i) Then
        MoveObject AMMUS_OBJ(i,0),AMMUS_OBJ(i,1)
        If ObjectX(AMMUS_OBJ(i))<-4000 Or ObjectX(AMMUS_OBJ(i))>4000 Or ObjectY(AMMUS_OBJ(i))<-4000 Or ObjectY(AMMUS_OBJ(i))>4000 Then
            DeleteObject AMMUS_OBJ(i)     
            AMMUS_ELOSSA(i)=OFF
        EndIf     
    EndIf
Next i
Return 
EDIT:

@Astigma: Käytänkö "Ilmoita tämä viesti"-namiskaa ensi kerralla?

Last edited by DatsuniG on Sat Jan 09, 2010 5:36 pm, edited 2 times in total.
Hengität nyt manuaalisesti.
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Astigma »

Noniin, soo soo. Tietenkin täällä saa auttaa ja kaikki apu on aina tarpeen. Joskus on hyvä, että antaa vähän vähemmän vinkkiä jotta joku joskus saisi ahaa-elämyksen ja ehkä oppisi asian copy-pasten sijaan. Joskus on taas parempi vääntää rautalangasta. On kuitenkin puhtaasti moderaattorien/adminien tehtävä huomauttaa turhista viesteistä ja siitä sitten antaa rangaistuksia jos näin katsotaan tarpeelliseksi. Liian monesti huomaan tällaista viestittelyä, missä vaan puututaan toisten käyttäjien viestien sisältöön/virheisiin/sääntöjen vastaisuuksiin. Haluaisin, että se poistuisi ja siksi nyt tähän puutuinkin.
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Tyhmät kysymykset (I/2010)

Post by CCE »

Misthema wrote:En löytänyt haulla tähän asiaan tuloksia, joten heitänpä sen tänne:

Eli miten on mahdollista saada kahdella peräkkäisellä SCREEN -komennolla 320x240 ruutu venytettyä 800x600 resoluution sisään ja kokoruutuun? Nyt en siis ole haluamassa 320x240 ikkunaa venytettynä "kokoruutuun" reunoineen kaikkineen, vaan samaan tapaan kun SCREEN -komennon kokoruututila.
Eli siis grafiikka olisi silti piirretty 320x240 ruudun sisään, mutta venytetty sitten 800x600 resoluution kokoruutuun.
Minua on tässä kerran neuvottu ja sainkin sen toimimaan, mutta en enää muista miten sen tein... ;)
Näin onnistuu.

Code: Select all

SCREEN 800,600,0,1 : SCREEN 320,240,0,cbSizable
SetWindow "",3	// suurennetaan ikkuna kokoruudulle
Repeat
	For i=0 To 100
		Box 160+Cos(Timer() / 8-i*10)*120, 120+Sin(Timer() / 9-i*10)*95,Abs(3.0*(Sin(Timer() / 4.5-i*5)) *(Cos(Timer() / 4-i*5)))+1, Abs(3.0*(Sin(Timer() / 9-i*10)) *(Cos(Timer() / 8-i*10)))+1, 1
	Next i
	DrawScreen
Forever
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Misthema »

CCE wrote:
Misthema wrote:En löytänyt haulla tähän asiaan tuloksia, joten heitänpä sen tänne:

Eli miten on mahdollista saada kahdella peräkkäisellä SCREEN -komennolla 320x240 ruutu venytettyä 800x600 resoluution sisään ja kokoruutuun? Nyt en siis ole haluamassa 320x240 ikkunaa venytettynä "kokoruutuun" reunoineen kaikkineen, vaan samaan tapaan kun SCREEN -komennon kokoruututila.
Eli siis grafiikka olisi silti piirretty 320x240 ruudun sisään, mutta venytetty sitten 800x600 resoluution kokoruutuun.
Minua on tässä kerran neuvottu ja sainkin sen toimimaan, mutta en enää muista miten sen tein... ;)
Näin onnistuu.

Code: Select all

SCREEN 800,600,0,1 : SCREEN 320,240,0,cbSizable
SetWindow "",3	// suurennetaan ikkuna kokoruudulle
Repeat
	For i=0 To 100
		Box 160+Cos(Timer() / 8-i*10)*120, 120+Sin(Timer() / 9-i*10)*95,Abs(3.0*(Sin(Timer() / 4.5-i*5)) *(Cos(Timer() / 4-i*5)))+1, Abs(3.0*(Sin(Timer() / 9-i*10)) *(Cos(Timer() / 8-i*10)))+1, 1
	Next i
	DrawScreen
Forever
Juu, hienoa. Tätähän minä en tiennytkään..
Misthema wrote:... Nyt en siis ole haluamassa 320x240 ikkunaa venytettynä "kokoruutuun" reunoineen kaikkineen, vaan samaan tapaan kun SCREEN -komennon kokoruututila.
!! ;E
Panzur
Newcomer
Posts: 32
Joined: Sat Jun 06, 2009 6:26 pm

Re: Tyhmät kysymykset (I/2010)

Post by Panzur »

Miten saan piirrettyä monta vihollista samaan aikaan?

Code: Select all

viholliset = 10
vihollinen=loadobject ("Media\ukkeli.bmp")
'tähän ne yhdellä tai parilla komennolla ne kaikki viholliset
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Panzur wrote:Miten saan piirrettyä monta vihollista samaan aikaan?
Typeillä onnistuu. Tähän tapaan:

Code: Select all

Type VIHOLLISET
    Field Obj
EndType

SCREEN 400, 300, 0, 0

vihu_master=loadobject ("Media\ukkeli.bmp")

For i = 1 to 10
    uusiVihu.VIHOLLISET = New (VIHOLLISET)
    uusiVihu\obj = CloneObject (vihu_master
    PositionObject uusiVihu\obj, Rand (1,400), Rand (1,300)
Next i

Repeat

    For iVihu.VIHOLLISET = Each VIHOLLISET
        PointObject iVihu\obj, vihu_master
        MoveObject iVihu\obj, 4
    Next iVihu

    DrawScreen

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

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

Chaosworm wrote:
Panzur wrote:Miten saan piirrettyä monta vihollista samaan aikaan?
Typeillä onnistuu. Tähän tapaan:

Code: Select all

...
Niin, taikka taulukoilla. Mutta suosittelen tyyppejä tuohon hommaan.

Code: Select all

Dim vihut(9) 'Luodaan taulukko 10 viholliselle, 0...9
master_vihu = LoadObject("Media/guy.bmp",72) 'master objekti josta kopioidaan muut vihut
ShowObject master_vihu, OFF 'Piilotetaan master_vihu objekti
For i = 0 to 9
    vihut(i) = CloneObject (master_vihu) 'Kopioidaan jokaiseen soluun objekti
Next i
Repeat
    For i = 0 to 9
        MoveObject vihut(i), 4
    Next i
    DrawScreen
Forever
Mutta todellakin, käytä mieluummin typejä. Laitoin vain esimerkin, että näinkin sen voi tehdä.
Tämä tapa toimii ihan hyvin, mutta jos vihollisten määrä muuttuilee paljonkin niin Tyypit ehdottomasti.
Edit: Kommentoin hieman.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (I/2010)

Post by Ilkka »

Aattelinpa et koitan tehä autolle luisun. No ihan hyvin se meni muuten, mutta tuli pikku ongelma: Kun auto palautuu luisusta, luisun pitäisi palautua ja auton lähtä keulan osoittamaan suuntaan. Noh, Auton keula kääntyykin luisu suuntaan.
Pahoittelen selityksen epäselvyyttä, mutta tajuatte ongelman kun kokeilette koodiani.

Code: Select all

SCREEN 640,480

auto=LoadObject("Media/car2.bmp",360)

x#=0
y#=0
kulma#=0
luisu#=0
luisu2#=0
vauhti#=0
Repeat

    SetWindow ""+FPS()
    
    If kulma<0 Then kulma=360
    If kulma>360 Then kulma=0
    
    If LeftKey() And vauhti>1 Then kulma+2
    If RightKey() And vauhti>1 Then kulma-2
    

    If LeftKey() And vauhti>2 Then 
        luisu+0.4
    Else
        luisu-1.4
    EndIf    

    If luisu<0 Then luisu=0
    
    If RightKey() And vauhti>2 Then 
        luisu2-0.4
    Else
        luisu2+1.4
    EndIf    

    If luisu2>0 Then luisu2=0

    If UpKey() Then 
        vauhti+0.1 
    Else 
        vauhti-0.05
    EndIf  
     
   
    
    If DownKey() Then vauhti-0.1
    
    If vauhti>5 Then vauhti=5
    If vauhti<0 Then vauhti=0
    
    x=x+Cos(kulma)*vauhti
    y=y+Sin(kulma)*vauhti
    RotateObject auto,kulma+luisu+luisu2
    PositionObject auto,x,y
    

  DrawGame 
    
    Text 10,10,"Kulma:"+kulma+"    x:"+x+"  y:"+y
    
  DrawScreen 
Forever 
Edit: Onko tosi ettei tähä löydy vastausta. :lol: Määkun luulin foorumia kaikki tietäväksi. ;)
Image
Tyyppi

Re: Tyhmät kysymykset (I/2010)

Post by Tyyppi »

Tuli muuten tällänen mieleen että onko Cool Basic:illa mahdollista tehdä minkään näköistä strategia peliä?
Locked