CBFunilla onnistuu viestilaatikon teko, joka ei sulje ohjelmaa. Kyseinen DLL löytyy haulla.Sepi wrote:Onko cb:llä mahdollista tehdä MakeErrorin tyylistä "erroria", joka ei kuitenkaan sulje ohjelmaa?
EDIT: viewtopic.php?f=12&t=293
CBFunilla onnistuu viestilaatikon teko, joka ei sulje ohjelmaa. Kyseinen DLL löytyy haulla.Sepi wrote:Onko cb:llä mahdollista tehdä MakeErrorin tyylistä "erroria", joka ei kuitenkaan sulje ohjelmaa?
Tarvitset CB SDK:n tai vaihtoehtoisesti pelkän cbApin, joka on Marcoderin tekemä DLL-kirjasto CB:lle. Sitten voit vain komentaa tyyliinSepi wrote:Onko cb:llä mahdollista tehdä MakeErrorin tyylistä "erroria", joka ei kuitenkaan sulje ohjelmaa?
Code: Select all
Include "cbAPI.cb"
MessageBox("Virhe tapahtui", "Virhe!")
Print "Ohjelma jatkuu"
WaitKey
Code: Select all
Function Error(msg$)
Repeat
Color 255,0,0
DrawGame
Box 0,0,ScreenWidth(),ScreenHeight()
Color 255,128,128
txtLen=TextWidth(msg)
Box ScreenWidth()/2-TextWidth(msg)/2-8,ScreenHeight()/2-TextHeight(msg)/2-4,TextWidth(msg)+16,TextHeight(msg)+8
Color 0,0,0
CenterText ScreenWidth()/2,ScreenHeight()/2,msg$,2
DrawScreen
Until KeyHit(28)
EndFunction
Error("Tälläinen oma virhe. Paina Enteriä jatkaaksesi")
Print "Ohjelma jatkuu"
WaitKey
Code: Select all
#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
Tukee normaali-, hit- ja datakerroksia. Ja vähän joustamaton :S
Code: Select all
menu:
SCREEN 1000,800
FrameLimit 40 'rajoita nopeutta
Type AMMUS
Field objec%
Field elos%
End Type
Type VIHU
Field obj%
Field veri%
Field elossa%
End Type
arial_big = LoadFont("Arial",ScreenWidth()/15,ON,OFF,ON)
Repeat
SetFont arial_big
If TextBut(ScreenWidth()/2,ScreenHeight()/2-50,"Aloita peli",cbDarkRed,cbRed) Then Goto Peli
//TextBut(200,125,"Lataa",cbDarkRed,cbRed,cbDark,1)
If TextBut(ScreenWidth()/2,ScreenHeight()/2+50,"Lopeta",cbDarkRed,cbRed) Then End
DrawScreen
Until EscapeKey()
Function TextBut(x,y,txt$,r1,g1,b1,r2,g2,b2,r3=0,g3=0,b3=0,disabled = 0)
r=getRGB(RED)
g=getRGB(GREEN)
b=getRGB(BLUE)
x2=x-TextWidth(txt$)/2
y2=y-TextHeight(txt$)/2
If MouseX()>x2-1 And MouseX()<(x2+TextWidth(txt$))+1 And MouseY()>y2-1 And MouseY()<(y2+TextHeight(txt$))+1 And disabled = 0 Then
Color r2,g2,b2
gi=1
Else
Color r1,g1,b1
EndIf
If disabled Then Color r3,g3,b3
CenterText x,y,txt$,2
If gi And MouseHit(1) Then Return 1
EndFunction
peli:
viihuja=2 //kuinka montaa sorttia vihollisia
dead=OFF
lvl=1
DeleteFont arial_big
kartta = LoadMap("Media\race2.til","Media\tileset.bmp")
car = LoadObject("Media\car2.bmp", 72)
ääniAmmu = LoadSound ("media\Blaster.wav")
huuto = LoadSound ("media\scream1.wav")
pati=LoadObject("media\bullet.bmp")
SetupCollision car, kartta, 1, 4, 2
Dim AMMUS_ELOSSA(100)
Dim AMMUS_OBJ(100)
Dim AMMUS_ELOSSA2(100)
Dim AMMUS_OBJ2(100)
Dim merk(100)
music=ON
peli2:
autojenkäännösnopeus = 5
ShowObject pati,OFF
For a=1 To lvl*5
vihumäärä=vihumäärä+1
Next a
aa=vihumäärä
For ooo=1 To viihuja
If ooo=1
cloonattava_vihu=LoadObject("media\guy.bmp",72)
cloonattava_veri=LoadObject("media\blood+bones23.png")
merk(ooo)=1
ElseIf ooo=2
cloonattava_vihu=LoadObject("media\soldier.bmp")
cloonattava_veri=LoadObject("media\blood+bones.png")
merk(ooo)=2
Else
cloonattava_vihu=LoadObject("media\target.bmp")
cloonattava_veri=LoadObject("media\blood+bones.png")
merk(ooo)=3
EndIf
ShowObject cloonattava_vihu,OFF
ShowObject cloonattava_veri,OFF
For i=1 To aa //- dead * osumat 'ei miinusteta mitään jos ei olla kuolleita
positionx=Rand(-300,300)
positiony=Rand(-300,300)
maara.VIHU = New(VIHU)
maara\obj=CloneObject(cloonattava_vihu)
maara\veri=CloneObject(cloonattava_veri)
PositionObject maara\obj, positionx,positiony
SetupCollision maara\obj, kartta,1,4,2
TurnObject maara\obj, Rand (0,360)
ShowObject maara\veri,OFF
maara\elossa=1
vihumäärä=vihumäärä+1
Next i
Next ooo
hp_car1=200
vauhti#=1
Repeat
//LIIKKUMINEN
If KeyDown(cbKeyA) Then TurnObject car,autojenkäännösnopeus
If KeyDown(cbKeyD) Then TurnObject car,-autojenkäännösnopeus
// If KeyDown(cbKeyW) Then MoveObject car, vauhti#
// If KeyDown(cbKeyS) Then MoveObject car,-vauhti#
CloneCameraPosition car
//KIIHTYYYS
If vauhti#<10 And KeyDown(cbkeyw) Then
If Timer()>record+300 Then
vauhti#=vauhti#+1
record=Timer()
EndIf 'liikuta autoa
Else
vauhti#=vauhti#-1
If vauhti#<0.5 Then vauhti#=0
EndIf
MoveObject car, vauhti#
If CountCollisions(car) Then
If Timer()>recorde+100 Then
vauhti#=vauhti#-0.5
recorde=TIMER()
EndIf
EndIf
////TEKOÄLY LIIKKUMINEN
For ooo=1 To viihuja
For maara.VIHU=Each VIHU
MoveObject maara\obj,Rand(0.5,2)
If CountCollisions(maara\obj) Then TurnObject maara\obj, Rand (0,16)
If ObjectsOverlap(car,maara\obj) Then
// ObjectOrder maara\obj2,-1
ObjectOrder maara\obj,-1
ObjectOrder kartta,-1
vauhti#=vauhti#-0.25
If vauhti#<0.5 Then vauhti#=0
MoveObject maara\obj,0
If maara\elossa=1 Then tapot=tapot+1
maara\elossa=0
//PlaySound huuto, 50
ShowObject maara\obj,OFF
If ooo=1
ShowObject maara\veri,ON
ObjectOrder maara\veri,-1
ObjectOrder kartta,-1
PositionObject maara\veri, ObjectX(maara\obj),ObjectY(maara\obj)
Else
ShowObject maara\veri,ON
ObjectOrder maara\veri,-1
ObjectOrder kartta,-1
PositionObject maara\veri, ObjectX(maara\obj),ObjectY(maara\obj)
EndIf
EndIf
Next maara
////TEKOÄLY AMPUMINEN
For maara.VIHU=Each VIHU
If maara\elossa=1 Then
ammutaanko=Rand (1,3)
If ammutaanko =1 Then
If (0<(GetAngle (ObjectX(maara\obj),ObjectY(maara\obj),ObjectX(car),ObjectY(car)))<45) Then //Or (GetAngle (ObjectX(maara\obj),ObjectY(maara\obj),ObjectX(car),ObjectY(car))>315) Then
If (Distance2 (maara\obj, car) < 200) Then
If ObjectSight(maara\obj,car) Then
//////////////////ONGELMAKOHTA///////////////
//////////////////ONGELMAKOHTA///////////////
//////////////////ONGELMAKOHTA///////////////
If ooo=1
TurnObject maara\obj,10 'jos vihu on tyyppiä 1
ElseIf ooo=2
PointObject maara\obj,car 'jos vihu on tyyppiä 2
Else
TurnObject maara\obj,5 'jos vihu on muuta kuin 1 tai 2
EndIf
If reload=0 Then
Gosub LisääAmmus //(pati)
PlaySound ääniAmmu,50
MoveObject maara\obj,0.3
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
Next maara
Next ooo
If reload>0 Then reload=reload-1
Gosub PäivitäAmmukset
DrawGame
Text 10,10,"nopeus:"+vauhti#
Text 10,42,"Tapot:"+tapot+" / "+vihumäärä
energybar(HP_car1,damage)
Musa(music)
If MouseX()< 930 And MouseX()> 900 And MouseY()<21 And MouseY()>5 Then
If MouseDown(1) Then
Music=ON
EndIf
EndIf
If MouseX()< 960 And MouseX()> 930 And MouseY()<21 And MouseY()>5 Then
If MouseDown(1) Then
Music=OFF
EndIf
EndIf
Color cbwhite
DrawScreen
If tapot=vihumäärä Then
dead=ON
If dead=ON Then
For maara.VIHU = Each VIHU
DeleteObject maara\veri
Delete maara
Next maara
vihumäärä=0
tapot=0
dead=OFF
EndIf
ShowObject kartta, OFF
ShowObject car, OFF
lvl=lvl+1
valikko(arial_big)
damage=0
ShowObject kartta, ON
ShowObject car, ON
Goto peli2
EndIf
If music=ON Then
If SoundPlaying(musaa)=0 Then
musaa = PlaySound ("Media\SK_Battle2.mp3")
If Rand(1,2)=1 Then
SetSound musaa,0,100,-100 'vasen kajari
Else
SetSound musaa,0,100,100 'oikea kajari
EndIf
EndIf
EndIf
If music=OFF Then StopSound musaa
//Goto aaaaaa
Until EscapeKey()
Return
Function valikko(arial_big)
Repeat
Color cbwhite
CenterText ScreenWidth()/2,ScreenHeight()/2,"SEURAAVA TASO -->"
If KeyDown(28) Then Return 2
If MouseHit(1) Then Return 2
DrawScreen
Until EscapeKey()
EndFunction
LisääAmmus:
For mara.VIHU=Each VIHU
For i=1 To 100
If AMMUS_ELOSSA(i)=OFF Then
AMMUS_ELOSSA(i)=ON
AMMUS_OBJ(i)=CloneObject(pati)
CloneObjectPosition AMMUS_OBJ(i),maara\obj
CloneObjectOrientation AMMUS_OBJ(i),maara\obj
reload=8'aseen lataus
Exit
EndIf
Next i
Next mara
Return
PäivitäAmmukset:
For maara.VIHU=Each VIHU
For i=1 To 100
If AMMUS_ELOSSA(i) Then
MoveObject AMMUS_OBJ(i),1
If ObjectsOverlap(AMMUS_OBJ(i),car) Or ObjectsOverlap(car,AMMUS_OBJ(i))
damage=damage+1
EndIf
If (GetMap(2, ObjectX(AMMUS_OBJ(i)), ObjectY(AMMUS_OBJ(i))) <> 0) Or ObjectsOverlap(AMMUS_OBJ(i),car) Or ObjectsOverlap(car,AMMUS_OBJ(i)) Then
DeleteObject AMMUS_OBJ(i)
AMMUS_ELOSSA(i)=OFF
EndIf
EndIf
Next i
Next maara
Return
Function energybar (HP_car1,damage)
Color cbred
Box 10,25,200,15,0
Box 10,25,HP_car1-damage,15,1
Color cbwhite
Text 10,25,"DAMAGE:"
EndFunction
Function musa(music)
Color cborange
CenterText 880,6,"Musa:"
If Music=ON
Color cbred
Else
Color cborange
EndIf
Box 900,5,30,16,OFF
Text 905,6,"ON"
If Music=OFF
Color cbred
Else
Color cborange
EndIf
Box 930,5,30,16,OFF
Text 932,6,"OFF"
EndFunction
Parametriksi ei saa, täytyy käyttää globaaleja. PS. Se on funktio, ei functio ;)lukutoukka wrote:Tyhmä kysyms, eli mitenkäs saa taulukon tiedot functioon?
CoolBasicissä kaikki taulukot ovat globaaleja, joten senkus vain käytät taulukoita.lukutoukka wrote:Tyhmä kysyms, eli mitenkäs saa taulukon tiedot functioon?
Code: Select all
Dim taulukko(10)
For i = 0 To 10
taulukko(i) = Rand(255)
Next i
tulosta()
WaitKey
Function tulosta()
For i = 0 To 10
Print taulukko(i)
Next i
EndFunction
Code: Select all
select tekeminen
Case 1
' tekee jotain
end select
Code: Select all
select tekeminen
Case "k"
' tekee jotain
end select
Code: Select all
Const PAINOVOIMA = -0.1
yPlus#=0
FrameLimit 40 'rajoita nopeutta
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin
'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin
'------------------------------------
bx=LoadObject("media\bigbullet.bmp")
SetupCollision bx,kenttä,1,4,2
'------------------------------------
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'--------------------------------
SetupCollision pelihahmo,bx,1,1,2
'--------------------------------
Repeat
'-----------------------
TranslateObject bx,0,-2
'----------------------
vauhti=0 'oletuksena ei liikettä
If RightKey() Then
'juokse oikealle
PaintObject pelihahmo,oikea 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=2 'vauhtia oikealle
ElseIf LeftKey() Then
'juokse vasemmalle
PaintObject pelihahmo,vasen 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=-2 'vauhtia vasemmalle
Else
'pysäytä animaatio, jos ei liikuta
PlayObject pelihahmo,0
EndIf
'liikuta pelihahmoa
TranslateObject pelihahmo,vauhti,yPlus#
yPlus=yPlus+PAINOVOIMA 'päivitä painovoima
UpdateGame 'päivitä törmäys
CloneCameraPosition pelihahmo 'liimaa kamera
maassa=0 'ilmassa jollei toisin käy ilmi
törmäykset=CountCollisions(pelihahmo)
'katsotaan tärmätäänkö kattoon tai lattiaan
For i=1 To törmäykset
If GetCollision(pelihahmo,i)=kenttä
'lattia
If CollisionAngle(pelihahmo,i)=90 Then
yPlus#=-1
maassa=1 'jalat on maassa
EndIf
'katto
If CollisionAngle(pelihahmo,i)=270 Then
yPlus#=-1
EndIf
EndIf
Next i
'jos ollaan ilmassa, näytä toisenlainen kuva
If törmäykset=0 Then PlayObject pelihahmo,12,0
'HYPPY (vain jos jalat maassa)
If KeyHit(cbKeyZ) And maassa Then
yPlus#=4.5 'voimaa ylös päin
EndIf
DrawScreen 'piirrä näyttö
Until EscapeKey()
programmer of DSG wrote:EDIT:aika hauska peli, vähän tylsä
Code: Select all
Const PAINOVOIMA = -0.1
yPlus#=0
FrameLimit 40 'rajoita nopeutta
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin
'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin
'------------------------------------
bx=LoadObject("media\bigbullet.bmp")
SetupCollision bx,kenttä,1,4,2
'------------------------------------
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'--------------------------------
SetupCollision pelihahmo,bx,1,1,2
'--------------------------------
Repeat
'-----------------------
TranslateObject bx,0,-2
'----------------------
vauhti=0 'oletuksena ei liikettä
If RightKey() Then
'juokse oikealle
PaintObject pelihahmo,oikea 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=2 'vauhtia oikealle
ElseIf LeftKey() Then
'juokse vasemmalle
PaintObject pelihahmo,vasen 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=-2 'vauhtia vasemmalle
Else
'pysäytä animaatio, jos ei liikuta
PlayObject pelihahmo,0
EndIf
'liikuta pelihahmoa
TranslateObject pelihahmo,vauhti,yPlus#
yPlus=yPlus+PAINOVOIMA 'päivitä painovoima
UpdateGame 'päivitä törmäys
CloneCameraPosition pelihahmo 'liimaa kamera
maassa=0'ilmassa jollei toisin käy ilmi
törmäykset=CountCollisions(pelihahmo)
'katsotaan tärmätäänkö kattoon tai lattiaan
For i=1 To törmäykset
If GetCollision(pelihahmo,i)=kenttä
'lattia
If CollisionAngle(pelihahmo,i)=90 Then
yPlus#=-1
maassa=1 'jalat on maassa
EndIf
'katto
If CollisionAngle(pelihahmo,i)=270 Then
yPlus#=-1
EndIf
EndIf
Next i
'jos ollaan ilmassa, näytä toisenlainen kuva
If törmäykset=0 Then PlayObject pelihahmo,12,0
'HYPPY (vain jos jalat maassa)
If KeyHit(cbKeyZ) And maassa Then
yPlus#=4.5 'voimaa ylös päin
EndIf
If KeyHit(cbKeyZ) And bx Then
yPlus#=4.5
EndIf
DrawScreen 'piirrä näyttö
Until EscapeKey()