Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish » Thu Dec 04, 2008 8:03 pm

rami123 wrote:miksi Bossi sammuu? se jaksaa seurata vähä aikaa ja sitten se sammuu ja ei reagoi mitenkään mihinkään..
:?

Code: Select all

  
     If tapot=5 Then 
Tuon if:in varmaan pitäisi olla

Code: Select all

if tapot > 5
Muutenhan tuo toteutuu vain jos tapot ovat tasan 5.
CoolBasic henkilökuntaa
Kehittäjä

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Thu Dec 04, 2008 8:51 pm

mikä vika tässsä bossin poistamisessa on?

virhe ilmoitetaan täsät koodista??

Code: Select all

   If bossi1hp=0 Then Delete bossi1
ja muut kohdat bossista

Code: Select all

  bossi1 = LoadObject ("c:\viikatemies\kingi.png",72)
     ShowObject bossi1,OFF 
     SetupCollision bossi1,kartta,1,4,2
     SetupCollision bossi1,ukko,2,2,2
     SetupCollision ukko,bossi1,2,2,2


bossi1hp=1500

repeat

  If tapot>5 Then 
            ShowObject bossi1,ON 
        PointObject bossi1,ukko
            If ObjectSight (bossi1,ukko) Then MoveObject bossi1, 1
            
            If ObjectsOverlap (bossi1,ibullet\obj) Then bossi1hp-1000
           If bossi1hp=0 Then Delete bossi1
           
            EndIf 



Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Thu Dec 04, 2008 9:09 pm

rami123 wrote: virhe ilmoitetaan täsät koodista??

Code: Select all

If bossi1hp=0 Then Delete bossi1
Edit: laita siihen deleteobject bossi1 ja sen = merkin tilalle <. :)

Heki

Re: Tyhmät kysymykset

Post by Heki » Fri Dec 05, 2008 12:06 am

Code: Select all

FrameLimit 40
SCREEN 500,350

Type AMMUS
     Field obj
     Field partikkeli
End Type 



Type RÄJÄHDYS
     Field partikkeli
End Type

savu=LoadAnimImage("C:\Program Files\CoolBasic\Media\smoke.bmp",16,16,0,12)
poks=LoadAnimImage("C:\Program Files\CoolBasic\Media\bang.bmp",32,32,0,8)

arial = LoadFont("arial",50)

DrawToWorld ON 

guy = LoadObject ("C:\Documents and Settings\HP_Omistaja\Omat tiedostot\Omat kuvatiedostot\sswsha.bmp",360)

DrawScreen

paukku = LoadObject ("C:\Documents and Settings\HP_Omistaja\Omat tiedostot\Omat kuvatiedostot\pati.bmp",1)
ShowObject paukku,OFF

DrawScreen 

hiiri=LoadImage("C:\Documents and Settings\HP_Omistaja\Omat tiedostot\Omat kuvatiedostot\kursori.bmp")
ShowMouse hiiri  

DrawScreen

WaitKey

vihu = LoadObject ("C:\Documents and Settings\HP_Omistaja\Omat tiedostot\Omat kuvatiedostot\shiiiit.bmp",360)
  
DrawScreen 

WaitKey

PositionObject guy, -150,-150

DrawScreen

   SetupCollision guy,vihu,2,2,2

DrawScreen 

Repeat  

TurnObject vihu,Rand(0.20)





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

   If KeyDown(cbkeyRControl) And reload=0 Then
   luoti.AMMUS = New(AMMUS)
   luoti\obj=CloneObject(paukku)
   CloneObjectPosition luoti\obj,guy
   CloneObjectOrientation luoti\obj,guy
   
        SetupCollision luoti\obj,vihu,2,2,2
     SetupCollision luoti\obj,guy,2,1,4
     
    
   If CountCollisions(luoti\obj) Then
        
            poksis.RÄJÄHDYS = New(RÄJÄHDYS)
            poksis\partikkeli = MakeEmitter(poks,10)
            
            CloneObjectPosition poksis\partikkeli,luoti\obj
            ObjectLife poksis\partikkeli,11
               
            ParticleMovement poksis\partikkeli,0,0
            ParticleEmission poksis\partikkeli,2,1,1
                
            ParticleAnimation poksis\partikkeli,7 
          
            DeleteObject luoti\obj
        
            Delete paukku
 
 EndIf
 Next paukku
   
  

    
   
   reload=5
    If reload>0 Then reload=reload-1
    
    
    
   Color cbRed
   SetFont arial
   Text 225,160, "ASS!"
   
   
   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
    DeleteObject luoti\obj
            Delete luoti 
        EndIf        
    Next luoti
DrawGame 

 Color cbOrange
    Box -185,135,367,270,OFF    
    

DrawScreen

 
Forever   
Eli tulee tuo "Can't find NEXT. Missing structure..." ym.
Mikä vikana?

User avatar
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot » Fri Dec 05, 2008 1:27 am

Sinulla on ylimääräinen silmukan lopetus jossakin(forever, until, next, end jotain..) Sisennä koodisi paremmin niin virhe löytyy helpommin.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Fri Dec 05, 2008 6:22 pm

Miten saisin silleen että vihut eivät pääse kartan ulkopuolelle? :|
Tarkoitan siis sitä kun luon vihun ja sijoitan sen randomisti niin ne eivät ilmestyisi kuin kartan sisälle.
Tässä koodi:

Code: Select all

Type AMMUS
    Field obj
    Field speed
    Field hp
    Field damage
End Type

Type VIHUT
    Field obj
    Field speed
    Field hp
    Field damage
End Type

'ladataan mediat
kartta=LoadMap("Media\cdm2.til","Media\tileset.bmp")
ukko=LoadObject("Media\soldier.bmp",72)
vihu=LoadObject("Media\guy.bmp",72)
ampu=LoadSound("Media\Gun 1.wav")
pati=LoadObject("Media\bullet.bmp")
ShowObject vihu, OFF
ShowObject pati, OFF

SetupCollision ukko,kartta,1,4,2

hp = 200 'pelaajan elämät
pisteet = 0 'pelaajan pisteet

Repeat

'jos elämiä on jäljellä niin suritetaan kaikki
If hp>0 Then

    'ohjaus
    TurnObject ukko,LeftKey()*3-RightKey()*3
    MoveObject ukko,UpKey()*3-DownKey()*3

    If KeyDown(cbkeyRControl) And reload=0 Then
        luoti.AMMUS = New(AMMUS)
        luoti\obj = CloneObject(pati)
            luoti\speed = 6
            luoti\hp = 20
            luoti\damage = 20
            SetupCollision luoti\obj,kartta,1,4,2
            CloneObjectPosition luoti\obj, ukko
        CloneObjectOrientation luoti\obj, ukko
        PlaySound ampu
    reload=30
    EndIf

    If reload>0 Then reload=reload-1

    For luoti.AMMUS = Each AMMUS
    MoveObject luoti\obj, luoti\speed
        If GetMap(2,ObjectX(luoti\obj),ObjectY(luoti\obj)) Then
            DeleteObject luoti\obj
            Delete luoti
        EndIf
        If luoti\hp=0 Or luoti\hp<0 Then
        DeleteObject luoti\obj
        Delete luoti
    EndIf
    Next luoti

    //Viholliset//
    If luonti=0 Then
    uusi.VIHUT = New(VIHUT)
    uusi\obj = CloneObject(vihu)
        uusi\speed = 2
        uusi\hp = 20
            uusi\damage = 10
            mapX=ObjectSizeX(kartta)
            mapY=ObjectSizeY(kartta)
            SetupCollision uusi\obj,kartta,1,4,2
            PositionObject uusi\obj,Rand(-mapX,mapX),Rand(-mapY,mapY)
        If GetMap(2,ObjectX(uusi\obj),ObjectY(uusi\obj)) Then
    PositionObject uusi\obj,Rand(-mapX,mapX),Rand(-mapY,mapY)
    EndIf
        luonti=50
    EndIf

    If luonti>0 Then luonti=luonti-1

    For uusi.VIHUT = Each VIHUT
        If ObjectSight(uusi\obj,ukko) Then
        PointObject uusi\obj, ukko
        MoveObject uusi\obj, uusi\speed
        EndIf
    If GetMap(2,ObjectX(uusi\obj),ObjectY(uusi\obj)) Then
        PositionObject uusi\obj,Rand(-mapX,mapX),Rand(-mapY,mapY)
        EndIf
        If ObjectsOverlap(uusi\obj,ukko) Then hp=hp-uusi\damage
    Next uusi

    'käydään ammukset ja vihut läpi yhtäaikaa
    For luoti.AMMUS = Each AMMUS
        For uusi.VIHUT = Each VIHUT
        If ObjectsOverlap(luoti\obj,uusi\obj) Then
            uusi\hp = uusi\hp - luoti\damage
            luoti\hp = luoti\hp - luoti\damage
        EndIf
        If uusi\hp=0 Or uusi\hp<0 Then
            pisteet = pisteet + Rand(25,80)
            DeleteObject uusi\obj
            Delete uusi
        EndIf
        Next uusi
        Next luoti
        
    EndIf

    If hp=0 Or hp<0 Then Goto häviö

    DrawGame

    'piirretään elämäpalkki
    Color cbdarkred
    Box 10,10,200,15
    Color cbred
    Box 10,10,hp,15
    Color cbwhite
    Text 10,10,"Hp: "+hp
    Text 10,30,"Score: "+pisteet

    CloneCameraPosition ukko

    DrawScreen

Forever

häviö:

arial=LoadFont("arial",25)

Repeat

    DrawGame
    SetFont arial
    Color cbwhite
    Text 150,110,"Game Over!"

    DrawScreen

Until EscapeKey()

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

Re: Tyhmät kysymykset

Post by DatsuniG » Fri Dec 05, 2008 6:37 pm

Code: Select all

Positionobject ukko,Rand(0,Screenwidth()-UKONLEVEYS),rand(0,Screenheight()-UKONKORKEUS)
Hengität nyt manuaalisesti.

User avatar
qwetyone
Member
Posts: 50
Joined: Tue Oct 07, 2008 6:39 pm

Re: Tyhmät kysymykset

Post by qwetyone » Fri Dec 05, 2008 7:40 pm

Voiko CoolBasicillä tehdyllä ohjelmalla tehdä käskyn avata joku tiedosto? Jos on niin joku ystävällinen voisi kertoa..
Ja miten voi ilmoittaa vaikkapa

Code: Select all

If sana=blabla Then Addtext " access denied "
kielteisenä että sanoo että Jos sana erisuuri kuin blabla sitten lisää.... ??

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

Re: Tyhmät kysymykset

Post by Jonez » Fri Dec 05, 2008 8:11 pm

Katso komento Execute tiedostojen availuun.

Toi koodi kielteisenä:

Code: Select all

If sana <> blabla Then Addtext " access denied "
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina » Fri Dec 05, 2008 8:13 pm

Voiko CoolBasicillä tehdyllä ohjelmalla tehdä käskyn avata joku tiedosto? Jos on niin joku ystävällinen voisi kertoa..
No XP:ssä ainakin toimii

Code: Select all

execute "polku/tiedosto"
En tiedä Vistasta, kun en ole koskaan käyttänyt.
Ja miten voi ilmoittaa vaikkapa *koodi* kielteisenä että sanoo että Jos sana erisuuri kuin blabla sitten lisää.... ??
Käytä operaattoreita < ja >. Esim:

Code: Select all

if sana<>blabla then addtext "acces denied
EDIT: Myöhässä >:(
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Sat Dec 06, 2008 1:04 pm

DatsuniG wrote:

Code: Select all

Positionobject ukko,Rand(0,Screenwidth()-UKONLEVEYS),rand(0,Screenheight()-UKONKORKEUS)
En saanut toimimaan voisiko joku selventää? :?

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

Re: Tyhmät kysymykset

Post by Jonez » Sat Dec 06, 2008 2:01 pm

Tässä pieni koodinpätkä joka luo ja arpoo ukot vain ja ainoastaan mapin sisälle, sellaisiin kohtiin jossa ei ole törmäyskerrosta. Kyseinen asia siis tehdään funktiolla LuoObjekti()

Code: Select all

SCREEN 800, 600
FrameLimit 40

Type ukot
    Field obj
End Type

mappi = LoadMap( "media\cdm2.til", "media\tileset.bmp" )

Global ukko
ukko = LoadObject( "media\guy.bmp" )
ShowObject ukko, OFF
 
For i = 1 To 50
    LuoObjekti()
Next i

Repeat
    
    TranslateCamera ( RightKey() - LeftKey() ) * 10, ( UpKey() - DownKey() ) * 10

    DrawScreen
Forever

Function LuoObjekti()
    nu.ukot = New( ukot )
    nu\obj = CloneObject( ukko )
    
    While True
        _x = Rand( 0, MapWidth() )
        _y = Rand( 0, MapHeight() )
        
        If GetMap2( 0, _x, _y ) <> 0 And GetMap2( 2, _x, _y ) = 0 Then
            PositionObject nu\obj, -MapWidth() * 16 + _x * 32 - 16, -MapHeight() * 16 + _y * 32 - 16
            Return True
        EndIf
    Wend
End Function
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

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

Re: Tyhmät kysymykset

Post by temu92 » Sat Dec 06, 2008 3:23 pm

Jonez, funktiossa on yksi mutta. Tilekoko ei aina ole 32x32. Tietty siitä tulee hyvä kotitehtävä niille jotka ottavat tuon :P

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Sat Dec 06, 2008 4:52 pm

miksi tappo pisteitä tulee enemmän kuin 1? (tarkoitan todella paljon)

tässä on varmaan ongelma kohta

Code: Select all

            If bossi1hp<0 Then 
            tapot+1
               PaintObject bossi1,kuollut
               MoveObject bossi1,-1

            EndIf 

Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi » Sat Dec 06, 2008 4:59 pm

Koska niitä tulee aina vain enemmän ja enemmän niin kauan kuin vihun hp on alle 1. Elikkä tuo korjaantuu kun laitat tuon silmukan sisälle näin:

Code: Select all

bossi1hp=0

User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- » Sat Dec 06, 2008 5:00 pm

rami123 wrote:miksi tappo pisteitä tulee enemmän kuin 1? (tarkoitan todella paljon)

tässä on varmaan ongelma kohta

Code: Select all

            If bossi1hp<0 Then 
            tapot+1
               PaintObject bossi1,kuollut
               MoveObject bossi1,-1

            EndIf 
No tietenkin sen takia, että piste lisätään joka framessa, jossa bossilla on alle nolla HP:ta. Tee vaikka näin:

Code: Select all

            If bossi1hp<0 Then 
            if pisteetlisätty=0 then
tapot+1
pisteetlisätty=1
endif
               PaintObject bossi1,kuollut
               MoveObject bossi1,-1

            EndIf 
[/quote]

Varmaan on jokin vähemmän kusinen metodikin, mutta noin minä sen tekisin.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Sat Dec 06, 2008 5:39 pm

sepi tuo teki bossista kuolemattoman taas..

Z tuo toimii :D

kiitos en olisi osannut noin tehdä sitä.
EDIT:

Tiedän koodissani on joku vika

Last edited by rami123 on Sat Dec 06, 2008 8:14 pm, edited 1 time in total.

Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi » Sat Dec 06, 2008 5:58 pm

Rami, eikö bossin pitäisi kuolla jos enu on alle 1? Nimittäin tuo keinoni toimisi silloin. Ei kai kukaan elä kun energiaa on 0?

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Sat Dec 06, 2008 10:14 pm

nyt en keksi taaskaan mitään..

mites sen että tuo maalataan, ja sen jälkeen pelaaja ei voi menettää hp tä siitä ruumiista?

Code: Select all

    If tapot>2 Then 
            ShowObject bossi1,ON 
        PointObject bossi1,ukko
            If ObjectSight (bossi1,ukko) Then MoveObject bossi1, 1
               If ObjectsOverlap (bossi1,ukko) Then hp-1
          EndIf 
          
            If bossi1hp<0 Then
            if pisteetlisätty1=0 Then
              tapot+1
              score+1000
            pisteetlisätty1=1
               EndIf
               PaintObject bossi1,kuollut
               MoveObject bossi1,-1
            EndIf 

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Sat Dec 06, 2008 10:53 pm

Varmaan muuttujalla:

Code: Select all

 If tapot>2 Then 
bossielossa=true
ShowObject bossi1,ON 
PointObject bossi1,ukko
If ObjectSight (bossi1,ukko) Then MoveObject bossi1, 1
If ObjectsOverlap (bossi1,ukko) and bossielossa=true Then hp-1
EndIf 

If bossi1hp<0 Then
bossielossa=false
if pisteetlisätty1=0 Then
tapot+1
score+1000
pisteetlisätty1=1
EndIf
PaintObject bossi1,kuollut
MoveObject bossi1,-1
EndIf 
Noin tekisin ainakin itse.
Edit: No joo. On kyllä purkkaisa ratkaisu.
Last edited by Character on Sun Dec 07, 2008 12:58 pm, edited 1 time in total.

Locked