jaahas wrote:(tää on mun eka peli et ei välttämättä oo kovin hyvä)
Ekoja pelejä ei edes juuri itse mainitsemasi syyn takia kannata julkistaa missään.jaahas wrote:eka peli ei oo hyvä
jaahas wrote:(tää on mun eka peli et ei välttämättä oo kovin hyvä)
Ekoja pelejä ei edes juuri itse mainitsemasi syyn takia kannata julkistaa missään.jaahas wrote:eka peli ei oo hyvä
käyppä kattomassa tyhmät kysymykset osiotamikeful wrote:Offtopikkia voisi vähentää. Jaahaksella näyttää olevan sen verran kysymyksiä, että olisi ehkä viisainta katsella editorin manuaalia ja Ongelmat-aluetta projektien sijaan.
Code: Select all
SCREEN 500,500
SetWindow "Hiiri Väistely",0
FrameLimit 50
olionobjectinkuva=MakeImage(15,15)
DrawToImage olionobjectinkuva
Color Rand(255),Rand(255),Rand(255)
Circle 0,0,15,0
DrawToScreen
olionobjecti=MakeObject()
PaintObject olionobjecti,-olionobjectinkuva
ShowObject olionobjecti,OFF
kursori=MakeImage(13,13)
DrawToImage kursori
Color Rand(45,255),Rand(45,255),Rand(45,255)
Circle 1,1,11,0
Color Rand(45,255),Rand(45,255),Rand(45,255)
Box 0,6,13,1,0
Color Rand(45,255),Rand(45,255),Rand(45,255)
Box 6,0,1,13,0
DrawToScreen
Hiiri=MakeObject(360)
PaintObject hiiri,-kursori
ShowObject hiiri,OFF
oikeahiiri=MakeImage(1,1)
DrawToImage oikeahiiri
Color 0,0,0
Box 0,0,1,1,0
DrawToScreen
ShowMouse oikeahiiri
KilpiKuva=MakeImage(30,30)
DrawToImage KilpiKuva
Color Rand(45,255),Rand(45,255),Rand(45,255)
Circle 0,0,30,0
DrawToScreen
Kilpi=MakeObject(360)
PaintObject kilpi,-KilpiKuva
PositionObject kilpi, 1000,1000
ShowObject Kilpi,OFF
Type Otukset
Field Otus
Field OtusX
Field OtusY
Field kääntyminen
Field väri1
Field väri2
Field väri3
Field Kilvessä
Field Kulma
EndType
Repeat
If Kohta=0 Then
Color CbWhite
Text 0,0, "-1- Helppo"
Text 0,15, "-2- Normaali"
Text 0,30, "-3- Vaikea"
Text 0,50, "Hiiren vasennäppäin tekee kilven joka torjuu vastuksia."
Text 0,65, "Kilven ylläpito maksaa 4 pistettä sekunnilta!"
Text 0,80, "Peli alkaa kun hiiren kuvake alkaa pyörimään!"
Color CbBlue
Text 0,485, "Pelin on tehnyt Knoy käyttäen CoolBasiccia!"
If KeyHit(CbKey1) Then
Kohta=1
määrä=30
EndIf
If KeyHit(CbKey2) Then
Kohta=1
määrä=60
EndIf
If KeyHit(CbKey3) Then
Kohta=1
määrä=90
EndIf
EndIf
If Kohta=1 Then
For i = 1 To määrä
oliot.otukset = New(Otukset)
oliot\otus=CloneObject(olionobjecti)
oliot\kääntyminen=Rand(0,19)
oliot\otusX=Rand(-249,249)
oliot\otusY=Rand(-249,249)
oliot\väri1=Rand(45,255)
oliot\väri2=Rand(45,255)
oliot\väri3=Rand(45,255)
PositionObject oliot\otus,oliot\otusX,oliot\otusY
RotateObject oliot\otus, Rand(0,359)
Next i
Kohta=2
ShowObject hiiri,ON
EndIf
If Kohta=2 Then
If MouseDown(1) And Pisteet>3 And Pelialkanut=1 Then
Pisteet-4
CloneObjectPosition Kilpi,hiiri
TurnObject kilpi,-2
ShowObject Kilpi,ON
Else
PositionObject kilpi, 1000,1000
ShowObject kilpi,OFF
EndIf
Color CbWhite
Text 0,0,"Pisteet:"+pisteet
Pisteet+1
PositionObject hiiri,MouseWX(),MouseWY()
For oliot.otukset = Each otukset
oliot\kääntyminen+1
If oliot\kääntyminen=20 Then
oliot\kääntyminen=0
TurnObject oliot\otus, Rand(-3,3)
EndIf
If pisteet>299 Then
pelialkanut=1
EndIf
If Pelialkanut=1 Then
TurnObject Hiiri,1
If ObjectsOverlap(hiiri,oliot\otus) And Oliot\kilvessä=0 Then
Kohta=3
hävisit=300
EndIf
EndIf
If ObjectsOverlap(Oliot\otus,kilpi)=0 Then
If oliot\kilvessä=1 Then
oliot\kilvessä=0
RotateObject oliot\otus,Oliot\kulma
EndIf
MoveObject oliot\otus, 2,0
Else
If Oliot\kilvessä=0 Then
oliot\kilvessä=1
oliot\kulma=ObjectAngle(oliot\otus)
EndIf
PointObject oliot\otus,hiiri
MoveObject Oliot\otus, -5,0
EndIf
oliot\otusX=ObjectX(oliot\otus)
oliot\otusY=ObjectY(oliot\otus)
If oliot\otusX>250 Then PositionObject oliot\otus, -249,oliot\otusY
If oliot\otusX<-250 Then PositionObject oliot\otus, 249,oliot\otusY
If oliot\otusY>250 Then PositionObject oliot\otus, oliot\otusX,-249
If oliot\otusY<-250 Then PositionObject oliot\otus, oliot\otusX,249
Next oliot
EndIf
If Kohta=3
ShowObject hiiri,OFF
If Hävisit>0 Then
Text 0,0,"Sait:"+pisteet+" pistettä!"
Hävisit-1
EndIf
For oliot.otukset = Each otukset
DeleteObject Oliot\otus
Delete oliot
Next oliot
If Hävisit=0 Then
Kohta=0
Pisteet=0
Pelialkanut=0
EndIf
EndIf
DrawScreen
Forever
Code: Select all
Text 10,10,"Pelin tarkoitus on väistää vastaan tulevia"
Text 10,30,"laatikoita mahdollisimman kauan. Omaa"
Text 10,50,"laatikkoasi liikutat nuolinäppäimillä."
Text 10,80,"Paina jotain näppäintä pelataksesi."
DrawScreen
WaitKey
Type LAATIKOT
Field x
Field y
Field leveys
Field korkeus
Field nopeus
EndType
x#=180
y#=280
pisteet=0
For i=1 To 15
l.LAATIKOT = New(LAATIKOT)
l\x = Rand(0,390)
l\y = y - Rand(200,800)
l\leveys = Rand(10,50)
l\korkeus = Rand(10,50)
l\nopeus = 2
Next i
Repeat
For l.LAATIKOT = Each LAATIKOT
If LeftKey()Then x-0.3
If RightKey()Then x+0.3
If UpKey()Then y-0.3
If DownKey()Then y+0.3
Color 255,255,255
Box l\x,l\y,l\leveys,l\korkeus
Color 200,0,0
Box x,y,20,20
l\y+l\nopeus
If l\y>300 Then l\y=y-Rand(400,800): l\x =Rand(0,400)
If Timer()>aika+500 Then
pisteet+1
aika=Timer()
EndIf
If Timer()>aikka+1000
l\nopeus+2
aikka=Timer()
EndIf
If y<0 Then y=0
If y>280 Then y=280
If x<0 Then x=0
If x>380 Then x=380
If BoxOverlap(x,y,20,20,l\x,l\y,l\leveys,l\korkeus) Then MakeError "Hävisit - Sait "+pisteet+" pistettä"
SetWindow "Väistelypeli - Pisteet:"+pisteet
Next l
DrawScreen
Forever
Hauska pikkupeli Vähän vain lagasi omalla koneellani (FPS 19) ja onnistuin saamaan pistesaldon 94Ilkka wrote:Tein huvikseen pelin jossa pitää väistää vastaan tulevia laatikoita. Nuolista liikutetaan omaa laatikkoa. Oma ennätykseni pikaisen testailun jälkeen: 54.
Itselläni FPS pysyi aika tiiviisti 70-75 rajoilla. Sillon tällön kävi 50, mutta ei mulla pahemmi ainakaa. En vielä sun yli päässy pisteissä, 73VesQ wrote:Hauska pikkupeli Vähän vain lagasi omalla koneellani (FPS 19) ja onnistuin saamaan pistesaldon 94
Code: Select all
FrameLimit 40
SCREEN 400,300
SetWindow "Urheilu pelit"
Viiva=MakeImage(90,2)
DrawToImage Viiva
Color CbBlue
Box 0,0,90,3
DrawToScreen
VauhtiViiva=MakeObject(4)
PaintObject VauhtiViiva,-Viiva
ShowObject vauhtiviiva,OFF
Keihäs=MakeImage(20,2)
DrawToImage Keihäs
Color CbDarkRed
Box 0,0,20,2
DrawToScreen
keihä=MakeObject(90)
PaintObject keihä,-keihäs
ShowObject keihä,OFF
Type Super
Field VauhtiVi
EndType
Gosub loadgame
If ParasAika=0 Then parasaika=1000000000
Repeat
If Kohta=0 Then
Color CbOrange
Text 0,0,"1. 10 metrin Pallojuoksu"
Color CbRed
Text 0,15,"2. Keihäänheitto"
Color CbWhite
Text 0,60, "Juoksun ohjeet:"
Text 0,75, "Rämpytä ylösnuolta nopeasti!"
Text 0,105, "Keihäänheiton ohjeet:"
Text 0,120, "Paina Spacea pohjassa saadaksesi kulma!"
Text 0,135, "Paina sapcea pohjassa uudestaan saadaksesi voima!"
Color CbBlue
Text 0,285, "Pelin on tehnyt Knoy käyttäen CoolBasiccia!"
If KeyHit(CbKey1) Then
JuoksunAika=0
Kohta=1
metrit=0
sentit=0
EndIf
If KeyHit(CbKey2) Then
keihäänmatka=0
Kohta=4
senttimetrit=0
X=0
Y=188
Kulma=0
KulmaKääntyy=0
KulmaV=0
Voima=0
VoimaV=0
voimakääntyy=0
voimaa=0
kulmaa=0
odotus=0
KulmaAlkaa=0
VoimaAlkaa=0
heittänyt=0
EndIf
EndIf
If Kohta=1 Then
Color CbOrange
Box 0,0,400,300
Color CbRed
Circle 160,120,80,80
Color CbWhite
Box 50,0,10,300
Box 340,0,10,300
Text 0,0, "Juostu:"
Text 0,15, metrit+","+sentit+"M"
Text 0,30, "Aika:"
Text 0,45, RoundDown(JuoksunAika/40)+"S"
Text 0,75, "Paras:"
If parasaika<15000 Then
Text 0,90, RoundDown(parasaika/40)+"S"
Else
Text 0,90,"----"
EndIf
JuoksunAika+1
If KeyHit(CbKeyUp) And Odotus=0 And Metrit<20 Then
sentit+10
Odotus+1
vauhti+15
EndIf
If odotus>0 Then
odotus=0
EndIf
If Vauhti>1 Then
Vauhti-2
EndIf
If Vauhti>30 And (JuoksunAika Mod 20)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>90 And (JuoksunAika Mod 40)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>120 And (JuoksunAika Mod 60)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>150 And (JuoksunAika Mod 70)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>180 And (JuoksunAika Mod 70)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>210 And (JuoksunAika Mod 75)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
If Vauhti>240 And (JuoksunAika Mod 75)=0 Then
suppa.super=New(Super)
suppa\vauhtiVi=CloneObject(vauhtiviiva)
PositionObject suppa\vauhtivi, Rand(-140,138),310
RotateObject suppa\vauhtivi, 270
EndIf
For suppa.super = Each super
MoveObject suppa\vauhtivi, 12
If ObjectY(Suppa\vauhtivi)<-170 Then
DeleteObject suppa\vauhtivi
Delete suppa
EndIf
Next suppa
If sentit=100 Then
sentit=0
Metrit+1
EndIf
If Metrit=10 Then
Kohta=3
vauhti=0
EndIf
EndIf
If Kohta=3 Then
Color CbWhite
Text 0,0,"Tuloksesi ON "+RoundDown(JuoksunAika/40)+" sekunttia!"
Text 0,15, "Paina spacea jatkaaksesi!"
For suppa.super = Each super
DeleteObject suppa\vauhtivi
Delete suppa
Next suppa
If KeyHit(cbkeyspace) Then
If JuoksunAika<parasaika Then
parasaika=JuoksunAika
EndIf
Gosub savegame
Kohta=0
EndIf
EndIf
If Kohta=4
Aika+1
Color CbGreen
Box 0,150,400,150
Color CbOrange
Box 0,190,50,20
Color CbBlue
Box 0,0,400,150
Color CbRed
Circle X,Y,12
Text 0,0, "Kulma:"+Kulmaa
Text 0,15, "Voima:"+Voimaa
Text 0,30, "Paras:"
If paraskeihäs>1 Then
Text 50,30, RoundUp(paraskeihäs)+"M"
Else
Text 50,30,"----"
EndIf
Color CbRed
Box 80,1,Kulmaa,13
Box 80,16,Voimaa,13
Color CbBlack
Box 79,0,92,15,0
Box 79,15,102,15,0
If KeyHit(CbKeySpace) And KulmaAlkaa=0 Then
KulmaAlkaa=1
EndIf
If KulmaAlkaa=1 And KeyDown(CbKeySpace)=0 And Odotus<1 Then
kulmaV=1
odotus+1
EndIf
If KeyDown(CbKeySpace) And Kulma<90 And KulmaV=0 And KulmaAlkaa=1 And kulmakääntyy=0 Then
Kulma+1
If kulma=90 Then
KulmaKääntyy=1
EndIf
EndIf
If KeyDown(CbKeySpace) And KulmaKääntyy=1 And KulmaV=0 And KulmaAlkaa=1 Then
kulma-1
If kulma=10 Then
KulmaV=1
EndIf
EndIf
If KeyHit(CbKeySpace) And VoimaAlkaa=0 And Odotus=1 Then
VoimaAlkaa=1
EndIf
If KeyDown(CbKeySpace) And voima<100 And voimaV=0 And voimaAlkaa=1 And voimakääntyy=0 Then
Voima+1
If voima=100 Then
voimaKääntyy=1
EndIf
EndIf
If KeyDown(CbKeySpace) And voimaV=0 And voimaAlkaa=1 And voimakääntyy=1 Then
Voima-1
If voima=0 Then
VoimaV=1
EndIf
EndIf
If VoimaAlkaa=1 And KeyDown(CbKeySpace)=0 And Odotus<20 Then
voimaV=1
odotus+1
EndIf
If X<40 And (Aika Mod 5)=0 And KulmaV=1 And VoimaV=1 And Odotus=20 Then
X+1
EndIf
If X>38 And heittänyt=0 Then
ShowObject keihä,ON
PositionObject Keihä,X-200,Y-225
RotateObject keihä,Kulma
heittänyt=1
EndIf
If heittänyt=0 Then
kulmaa=kulma
voimaa=voima
EndIf
If heittänyt=1 Then
If kulma>29 And Voima>15 Then
If kulma>80 Then
voima-1
EndIf
If kulma>30 Then
voima-1
EndIf
EndIf
If Kulma<30 And Voima<150 Then
voima+2
EndIf
MoveObject keihä,RoundUp(voima/15)
If kulma<90 Then
TurnObject keihä,-1
Kulma-1
If kulma<75 Then
TurnObject keihä,-1
Kulma-1
If kulma<60 Then
TurnObject keihä,-1
Kulma-1
If kulma<45 Then
Kulma-1
If kulma<30 Then
kulma-1
EndIf
EndIf
EndIf
EndIf
EndIf
If ObjectY(keihä)<(Y-227) Then
heittänyt=2
EndIf
If Heittänyt=2 Then
keihääntulos=RoundUp((Distance(X-200,ObjectY(keihä),ObjectX(keihä),ObjectY(keihä))/3))
Kohta=5
EndIf
EndIf
EndIf
If Kohta=5 Then
Color CbWhite
Text 0,0,"Tuloksesi ON "+RoundUp(keihääntulos)+" metriä!"
Text 0,15, "Paina spacea jatkaaksesi!"
ShowObject keihä,OFF
If KeyHit(cbkeyspace) Then
If keihääntulos>paraskeihäs Then
paraskeihäs=keihääntulos
EndIf
Gosub savegame
Kohta=0
EndIf
EndIf
DrawScreen
Forever
savegame:
lataus=OpenToEdit("Media\Tulokset.dat")
WriteInt lataus,parasaika
WriteInt lataus,paraskeihäs
CloseFile lataus
Return
LoadGame:
lataus=OpenToEdit("Media\Tulokset.dat")
parasaika=ReadInt(lataus)
paraskeihäs=ReadInt(lataus)
CloseFile lataus
Return
Code: Select all
ukkeli=MakeImage(27,27)
DrawToImage ukkeli
Color CbBlue
Box 0,0,9,9
Color CbGreen
Box 9,9,9,9
Color CbYellow
Box 9,0,9,9
Color CbRed
Box 0,9,9,9
Color CbPurple
Box 18,0,9,9
Color CbCyan
Box 18,9,9,9
Color CbOrange
Box 18,18,9,9
Color CbPink
Box 0,18,9,9
Color CbBlackSkin
Box 9,18,9,9
DrawToScreen
hemmo=MakeObject(360)
PaintObject hemmo,-ukkeli
ShowObject hemmo,OFF
Type ukot
Field ukko
EndType
For i = 1 To 100
jätkät.ukot=New(ukot)
jätkät\ukko=CloneObject(hemmo)
PositionObject jätkät\ukko, Rand(-199,199),Rand(-149,149)
RotateObject jätkät\ukko, Rand(0,359)
Next i
FrameLimit 60
Repeat
Color Rand(0,255),Rand(0,255),Rand(0,255)
Box 0,0,400,300
For i = 1 To 25
Color Rand(0,255),Rand(0,255),Rand(0,255)
Box Rand(0,400),Rand(0,300),Rand(0,400),Rand(0,300)
Next i
For jätkät.ukot = Each ukot
MoveObject jätkät\ukko,1,0
TurnObject jätkät\Ukko,Rand(0,359)
If ObjectX(jätkät\ukko)>200 Then PositionObject jätkät\ukko,199,ObjectY(jätkät\ukko)
If ObjectX(jätkät\ukko)<-200 Then PositionObject jätkät\ukko,-199,ObjectY(jätkät\ukko)
If ObjectY(jätkät\ukko)<-150 Then PositionObject jätkät\ukko,ObjectX(jätkät\ukko),-149
If ObjectY(jätkät\ukko)>150 Then PositionObject jätkät\ukko,ObjectX(jätkät\ukko),149
Next jätkät
DrawScreen
Forever
Code: Select all
Global gReload as integer, gX As Float, gY As Float, gSpeed As Float, gAngle As Float, gScore As Integer
gX = 200
gY = 150
taim = 3000
Type BULLETS
Field x As Float
Field y As Float
Field angle As Float
EndType
Type ASTEROIDS
Field x As Float
Field y As Float
Field Radius As Float
Field angle As Float
Field rotateangle As Float
Field angles As Integer
Field AnglePositions
Field Rotation As Integer
EndType
For i = 1 To i + 1
SetWindow "Score: " + gScore
If Timer() - taimer > taim Then
taim = max(200,taim - 25)
taimer = Timer()
If Rand(1) Then
xx = Rand(-70,ScreenWidth() + 70)
If Rand(1) Then yy = -70 Else yy = ScreenHeight() + 70
Else
yy = Rand(-70,ScreenHeight() + 70)
If Rand(1) Then xx = -70 Else xx = Screenwidth() + 70
EndIf
SpawnAsteroid(xx,yy,GetAngle(xx,yy,gX,gY) + Rand(-20,20),Rand(20,35))
EndIf
If KeyHit(cbKeySpace) And Timer() - gReload > 500 Then Shoot() : gReload = Timer()
DrawShip()
Updateship()
UpdateBullets()
UpdateAsteroids()
DrawScreen
Next i
Function UpdateShip()
If UpKey() Then gSpeed = Min(gSpeed + 0.05,4) Else gSpeed = CurveValue(0,gspeed,30) 'Max(0,gSpeed - 0.05)
If outofscreen(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15) Then gSpeed = -gSpeed
gAngle = WrapAngle(gAngle + gSpeed * (LeftKey() - RightKey()))
gX = gX + Cos(gAngle) * gSpeed
gY = gY - Sin(gAngle) * gSpeed
For asteroid.ASTEROIDS = Each ASTEROIDS
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
Else
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
EndIf
Next i
Next asteroid
EndFunction
Function DrawShip()
Line gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15
Line gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15
Line gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8
Line gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8
EndFunction
Function Shoot()
bullet.BULLETS = New(BULLETS)
bullet\x = gX + Cos(gAngle) * 15
bullet\y = gY - Sin(gAngle) * 15
bullet\angle = gAngle
EndFunction
Function UpdateBullets()
For bullet.BULLETS = Each BULLETS
bullet\x = bullet\x + Cos(bullet\angle) * 1.5
bullet\y = bullet\y - Sin(bullet\angle) * 1.5
Line bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2
For asteroid.ASTEROIDS = Each ASTEROIDS
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
If LineSegIsect(asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2) Then
rad = asteroid\radius / 2
x = asteroid\x
y = asteroid\y
ang = asteroid\angle
Delete asteroid
If rad > 5 Then
For a = 0 To 1
SpawnAsteroid(x,y,ang + a * 180 + Rand(-30,30),rad)
Next a
EndIf
gScore + 100
Delete bullet
Exit
EndIf
Else
If LineSegIsect(bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then
rad = asteroid\radius / 2
x = asteroid\x
y = asteroid\y
ang = asteroid\angle
Delete asteroid
If rad > 5 Then
For a = 0 To 1
SpawnAsteroid(x,y,ang + a * 180 + Rand(-30,30),rad)
Next a
EndIf
gScore + 100
Delete bullet
Exit
EndIf
EndIf
Next i
Next asteroid
If outofscreen(bullet\x,bullet\y) Then Delete bullet
Next bullet
EndFunction
Function SpawnAsteroid(x As Float,y As Float,angle As Float,radius As Float)
asteroid.ASTEROIDS = New(ASTEROIDS)
asteroid\x = x
asteroid\y = y
asteroid\rotation = 1 - Rand(1) * 2
asteroid\angle = angle
asteroid\angles = Rand(5,12)
asteroid\radius = radius
asteroid\anglepositions = MakeMEMBlock(asteroid\angles * 4)
For i = 0 To asteroid\angles - 1
tmp = tmp + rand(360 / asteroid\angles / 4,360 / asteroid\angles * 1.5)
PokeInt asteroid\anglepositions, i * 4, tmp
Next i
EndFunction
Function UpdateAsteroids()
For asteroid.ASTEROIDS = Each ASTEROIDS
asteroid\x = asteroid\x + Cos(asteroid\angle) * 0.7
asteroid\y = asteroid\y - Sin(asteroid\angle) * 0.7
asteroid\rotateangle = wrapangle(asteroid\rotateangle + asteroid\rotation)
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
Line asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius
Else
Line asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius
EndIf
Next i
If asteroid\x < -75 Or asteroid\x > ScreenWidth() + 75 Or asteroid\y < -75 Or asteroid\y > ScreenHeight() + 75 Then Delete asteroid
Next asteroid
EndFunction
Function Outofscreen(xx As Float,yy As Float)
Return Not(Not((xx > ScreenWidth()) + (xx < 0) + (yy > ScreenHeight()) + (yy < 0)))
EndFunction
Function LineSegIsect(ax#, ay#, bx#, by#, cx#, cy#, dx#, dy#)
Return (((bx-ax)*(cy-ay)-(by-ay)*(cx-ax))*((bx-ax)*(dy-ay)-(by-ay)*(dx-ax)) < 0)(((dy-cy)*(cx-ax)-(dx-cx)*(cy-ay))*((dx-cx)*(by-cy)-(dy-cy)*(bx-cx)) < 0)
EndFunction
@VesQ: En jaksanut panostaa aluksen liikkumiseen : )
Edit2: Hiirellä ohjattava versio:
Code: Select all
Global gAmount, gReload as Integer, gX As Float, gY As Float, gSpeed As Float, gAngle As Float, gScore As Integer
Const MAXASTEROIDS = 30
gX = 200
gY = 150
taim = 2000
ShowMouse off
Type BULLETS
Field x As Float
Field y As Float
Field angle As Float
EndType
Type ASTEROIDS
Field x As Float
Field y As Float
Field Radius As Float
Field angle As Float
Field rotateangle As Float
Field angles As Integer
Field AnglePositions
Field Rotation As Integer
EndType
For i = 1 To i + 1
SetWindow "Pisteet: " + gScore + " - Asteroideja: " + gAmount
If Timer() - taimer > taim And gAmount < MAXASTEROIDS Then
taim = max(500,taim - 50)
taimer = Timer()
If Rand(1) Then
xx = Rand(-70,ScreenWidth() + 70)
If Rand(1) Then yy = -70 Else yy = ScreenHeight() + 70
Else
yy = Rand(-70,ScreenHeight() + 70)
If Rand(1) Then xx = -70 Else xx = Screenwidth() + 70
EndIf
SpawnAsteroid(xx,yy,GetAngle(xx,yy,gX,gY) + Rand(-20,20),Rand(20,35))
EndIf
If MouseDown(1) And Timer() - gReload > 1000 Then Shoot() : gReload = Timer()
Crosshair()
DrawShip()
Updateship()
UpdateBullets()
UpdateAsteroids()
DrawScreen
Next i
Function Crosshair()
Line MouseX(), MouseY() - 7, MouseX(), MouseY() - 3
Line MouseX(), MouseY() + 7, MouseX(), MouseY() + 3
Line MouseX() - 7, MouseY(), MouseX() - 3, MouseY()
Line MouseX() + 7, MouseY(), MouseX() + 3, MouseY()
EndFunction
Function UpdateShip()
gAngle = GetAngle(gX,gY,MouseX(),MouseY())
velx# = velx# + (MouseX()-gX)*0.05
vely# = vely# + (MouseY()-gY)*0.05
velx# = velx# + (-velx#)*0.05
vely# = vely# + (-vely#)*0.05
gX = gX + velx# / 3
gY = gY + vely# / 3
If outofscreen(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15) Then gSpeed = -gSpeed
For asteroid.ASTEROIDS = Each ASTEROIDS
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
Else
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
If LineSegIsect(gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then MakeError "Hävisit! Sait " + gScore + " pistettä!"
EndIf
Next i
Next asteroid
EndFunction
Function DrawShip()
Line gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15
Line gx + Cos(gangle) * 15, gy - Sin(gangle) * 15, gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15
Line gx + Cos(gangle + 140) * 15, gy - Sin(gangle + 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8
Line gx + Cos(gangle - 140) * 15, gy - Sin(gangle - 140) * 15, gx + Cos(gangle - 180) * 8, gy - Sin(gangle - 180) * 8
EndFunction
Function Shoot()
bullet.BULLETS = New(BULLETS)
bullet\x = gX + Cos(gAngle) * 15
bullet\y = gY - Sin(gAngle) * 15
bullet\angle = gAngle
EndFunction
Function UpdateBullets()
For bullet.BULLETS = Each BULLETS
Line bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2
For u = 0 To 2
bullet\x = bullet\x + Cos(bullet\angle)
bullet\y = bullet\y - Sin(bullet\angle)
For asteroid.ASTEROIDS = Each ASTEROIDS
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
If LineSegIsect(asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2) Then
rad = asteroid\radius / 2
x = asteroid\x
y = asteroid\y
ang = asteroid\angle
Delete asteroid
If rad > 5 Then
For a = 0 To 1
SpawnAsteroid(x,y,ang + a * 180 + Rand(-30,30),rad)
Next a
EndIf
gScore + 100
gAmount - 1
Delete bullet
Goto skip
EndIf
Else
If LineSegIsect(bullet\x, bullet\y, bullet\x + Cos(bullet\angle) * 2, bullet\y - Sin(bullet\angle) * 2, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius) Then
rad = asteroid\radius / 2
x = asteroid\x
y = asteroid\y
ang = asteroid\angle
Delete asteroid
If rad > 5 Then
For a = 0 To 1
SpawnAsteroid(x,y,ang + a * 180 + Rand(-30,30),rad)
Next a
EndIf
gScore + 100
gAmount - 1
Delete bullet
Goto skip
EndIf
EndIf
Next i
Next asteroid
Next u
If outofscreen(bullet\x,bullet\y) Then Delete bullet
skip:
Next bullet
EndFunction
Function SpawnAsteroid(x As Float,y As Float,angle As Float,radius As Float)
asteroid.ASTEROIDS = New(ASTEROIDS)
asteroid\x = x
asteroid\y = y
asteroid\rotation = 1 - Rand(1) * 2
asteroid\angle = angle
asteroid\angles = Rand(5,12)
asteroid\radius = radius
asteroid\anglepositions = MakeMEMBlock(asteroid\angles * 4)
For i = 0 To asteroid\angles - 1
tmp = tmp + rand(360 / asteroid\angles / 4,360 / asteroid\angles * 1.5)
PokeInt asteroid\anglepositions, i * 4, tmp
Next i
gAmount + 1
EndFunction
Function UpdateAsteroids()
For asteroid.ASTEROIDS = Each ASTEROIDS
asteroid\x = asteroid\x + Cos(asteroid\angle) * 0.7
asteroid\y = asteroid\y - Sin(asteroid\angle) * 0.7
asteroid\rotateangle = wrapangle(asteroid\rotateangle + asteroid\rotation)
For i = 0 To asteroid\angles - 1
If i = asteroid\angles - 1 Then
Line asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, 0)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius
Else
Line asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, i * 4)) * asteroid\radius, asteroid\x + Cos(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius, asteroid\y - Sin(asteroid\rotateangle + PeekInt(asteroid\anglepositions, (i + 1) * 4)) * asteroid\radius
EndIf
Next i
If asteroid\x < -75 Or asteroid\x > ScreenWidth() + 75 Or asteroid\y < -75 Or asteroid\y > ScreenHeight() + 75 Then Delete asteroid : gAmount - 1
Next asteroid
EndFunction
Function Outofscreen(xx As Float,yy As Float)
Return Not(Not((xx > ScreenWidth()) + (xx < 0) + (yy > ScreenHeight()) + (yy < 0)))
EndFunction
Function LineSegIsect(ax#, ay#, bx#, by#, cx#, cy#, dx#, dy#)
Return (((bx-ax)*(cy-ay)-(by-ay)*(cx-ax))*((bx-ax)*(dy-ay)-(by-ay)*(dx-ax)) < 0)(((dy-cy)*(cx-ax)-(dx-cx)*(cy-ay))*((dx-cx)*(by-cy)-(dy-cy)*(bx-cx)) < 0)
EndFunction
Muuten ihan hyvä, mutta eikös tuossa periaatteessa pelata avaruudessa? Ja mielestäni silloin ei kitka (tai joku muu voima) hidasta aluksen liikettä ja aluksen pitäisi pystyä kääntymään jopa paikallaan. Ihmeellistä, kun avaruusalus liikkuu melkein kuin auto.DatsuniG wrote:Olipas tylsää ja koodailin (huonon) Asteroids kloonin piirtokomennoilla. Ja kiitokset Spuntelle funktiosta LineSegIsect().
Code: Select all
SCREEN 800,600,16,0
SetWindow "Effect, By Knoy"
Type Effektit
Field Effekti
Field NewAngle
Field angle
EndType
CO=1
LOAD=1
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 1"
Color Cbwhite
Text 0,0,"Loading Image 1"
DrawScreen
Ef1=MakeImage(15,3)
DrawToImage Ef1
Color 105,0,0
Box 0,0,13,3
Color 255,0,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 2."
Color Cbwhite
Text 0,0,"Loading Image 2."
DrawScreen
Ef2=MakeImage(15,3)
DrawToImage Ef2
Color 0,105,0
Box 0,0,13,3
Color 0,255,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 3.."
Color Cbwhite
Text 0,0,"Loading Image 3.."
DrawScreen
Ef3=MakeImage(15,3)
DrawToImage Ef3
Color 0,0,105
Box 0,0,13,3
Color 0,0,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 4..."
Color Cbwhite
Text 0,0,"Loading Image 4..."
DrawScreen
Ef4=MakeImage(15,3)
DrawToImage Ef4
Color 0,105,105
Box 0,0,13,3
Color 0,255,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 5...."
Color Cbwhite
Text 0,0,"Loading Image 5...."
DrawScreen
Ef5=MakeImage(15,3)
DrawToImage Ef5
Color 105,105,105
Box 0,0,13,3
Color 255,255,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 6....."
Color Cbwhite
Text 0,0,"Loading Image 6....."
DrawScreen
Ef6=MakeImage(15,3)
DrawToImage Ef6
Color 105,105,0
Box 0,0,13,3
Color 255,255,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 7......"
Color Cbwhite
Text 0,0,"Loading Image 7......"
DrawScreen
Ef7=MakeImage(15,3)
DrawToImage Ef7
Color 105,0,105
Box 0,0,13,3
Color 255,0,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 8......."
Color Cbwhite
Text 0,0,"Loading Image 8......."
DrawScreen
Kursori=MakeImage(15,15)
DrawToImage kursori
Color 55,55,55
Line 4,5,11,5
Line 4,9,11,9
Line 5,4,5,11
Line 9,4,9,11
Color 105,105,105
Line 2,6,13,6
Line 2,8,13,8
Line 6,2,6,13
Line 8,2,8,13
Color 255,255,255
Line 0,7,15,7
Line 7,0,7,15
DrawToScreen
ShowMouse OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 1........"
Color Cbwhite
Text 0,0,"Loading Object 1........"
DrawScreen
Eff1=MakeObject(180)
PaintObject Eff1,-Ef1
ShowObject Eff1,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 2........."
Color Cbwhite
Text 0,0,"Loading Object 2........."
DrawScreen
Eff2=MakeObject(180)
PaintObject Eff2,-Ef2
ShowObject Eff2,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 3.........."
Color Cbwhite
Text 0,0,"Loading Object 3.........."
DrawScreen
Eff3=MakeObject(180)
PaintObject Eff3,-Ef3
ShowObject Eff3,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 4..........."
Color Cbwhite
Text 0,0,"Loading Object 4..........."
DrawScreen
Eff4=MakeObject(180)
PaintObject Eff4,-Ef4
ShowObject Eff4,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 5............"
Color Cbwhite
Text 0,0,"Loading Object 5............"
DrawScreen
Eff5=MakeObject(180)
PaintObject Eff5,-Ef5
ShowObject Eff5,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 6............."
Color Cbwhite
Text 0,0,"Loading Object 6............."
DrawScreen
Eff6=MakeObject(180)
PaintObject Eff6,-Ef6
ShowObject Eff6,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 7.............."
Color Cbwhite
Text 0,0,"Loading Object 7.............."
DrawScreen
Eff7=MakeObject(180)
PaintObject Eff7,-Ef7
ShowObject Eff7,OFF
Hiiri=MakeObject()
PaintObject Hiiri,-kursori
For i = 1 To 200
DrawGame
Objects+1
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Creating Object "+CO+COO$
Color Cbwhite
Text 0,0,"Creating Object "+CO+COO$
DrawScreen
CO+1
COO$=String(".",RoundDown((CO-1)/15))
tikut.effektit=New(Effektit)
Random=Rand(0,6)
If Random=0 Then tikut\effekti=CloneObject(Eff1)
If Random=1 Then tikut\effekti=CloneObject(Eff2)
If Random=2 Then tikut\effekti=CloneObject(Eff3)
If Random=3 Then tikut\effekti=CloneObject(Eff4)
If Random=4 Then tikut\effekti=CloneObject(Eff5)
If Random=5 Then tikut\effekti=CloneObject(Eff6)
If Random=6 Then tikut\effekti=CloneObject(Eff7)
MoveObject Tikut\effekti,Rand(-399,399),Rand(-299,299)
RotateObject tikut\effekti,Rand(0,359)
Next i
Repeat
If KulmaNopeus=OFF Then
If KeyHit(CbKeyReturn) And Odotus=0 Then
KulmaNopeus=ON
Locate 0,60
Odotus=6
EndIf
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 2,62,"Press space to change objects turn speed."
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,60,"Press space to change objects turn speed."
Else
Locate 2,62
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Noop=Input("New object turn speed:")
Locate 0,60
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Noop=Input("New object turn speed:")
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 0,75,"Max turnspeed is 100 and minium is 1"
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,75,"Max turnspeed is 100 and minium is 1"
If KeyHit(CbKeyReturn) And Odotus=0 Then
CloseInput
KulmaNopeus=OFF
Odotus=6
EndIf
EndIf
Color CbWhite
DrawGame
If RightKey() Then MoveObject Hiiri,7,0
If LeftKey() Then MoveObject Hiiri,-7,0
If UpKey() Then MoveObject Hiiri,0,-7
If DownKey() Then MoveObject Hiiri,0,7
If ObjectX(hiiri)>400 Then PositionObject Hiiri,-399,ObjectY(Hiiri)
If ObjectX(hiiri)<-400 Then PositionObject Hiiri,399,ObjectY(Hiiri)
If ObjectY(hiiri)>300 Then PositionObject Hiiri,ObjectX(Hiiri),-299
If ObjectY(hiiri)<-300 Then PositionObject Hiiri,ObjectX(Hiiri),299
If KeyDown(CbKeySpace) And KulmaNopeus=OFF Then Speed=5 Else Speed=0
If KeyDown(CbKeyLControl) And KulmaNopeus=OFF Then Turn=1 Else Turn=0
If KeyDown(CbKeyLShift) And KulmaNopeus=OFF And Objects<300 Then
Odotus=3
Objects+1
tikut.effektit=New(Effektit)
Random=Rand(0,6)
If Random=0 Then tikut\effekti=CloneObject(Eff1)
If Random=1 Then tikut\effekti=CloneObject(Eff2)
If Random=2 Then tikut\effekti=CloneObject(Eff3)
If Random=3 Then tikut\effekti=CloneObject(Eff4)
If Random=4 Then tikut\effekti=CloneObject(Eff5)
If Random=5 Then tikut\effekti=CloneObject(Eff6)
If Random=6 Then tikut\effekti=CloneObject(Eff7)
PositionObject Tikut\effekti,ObjectX(hiiri)+Rand(-100,100),ObjectY(hiiri)+Rand(-100,100)
RotateObject tikut\effekti,Rand(0,359)
EndIf
If Odotus>0 Then Odotus-1
For tikut.effektit = Each effektit
If turn=1 Then
tikut\newangle=GetAngle2(tikut\effekti,hiiri)
tikut\angle=CurveAngle(tikut\newangle,tikut\angle,(Noop+Rand(-10,10)))
RotateObject tikut\effekti,(tikut\angle+Rand(-1,1))
EndIf
'TurnObject tikut\effekti,Rand(-1,1)
tikut\angle=ObjectAngle(tikut\effekti)
MoveObject tikut\effekti,(Float(Distance2(tikut\effekti,hiiri))/100)+Rand(0,3)+Speed
If ObjectX(tikut\effekti)>410 Then PositionObject tikut\effekti,-409,ObjectY(tikut\effekti)
If ObjectX(tikut\effekti)<-410 Then PositionObject tikut\effekti,409,ObjectY(tikut\effekti)
If ObjectY(tikut\effekti)>310 Then PositionObject tikut\effekti,ObjectX(tikut\effekti),-309
If ObjectY(tikut\effekti)<-310 Then PositionObject tikut\effekti,ObjectX(tikut\effekti),309
If KeyDown(CbKeyZ) And KulmaNopeus=OFF And Odotus=0 And Objects>1 Then
Odotus=3
Objects-1
DeleteObject tikut\effekti
Delete tikut
EndIf
Next tikut
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 2,2, "Use left control to draw objects toward mark."
Text 2,17, "Use space button to increase object speed."
Text 2,32, "Use left shift to create new object and Z button delete objects."
Text 2,47, "Objects:"+Objects+"/300"
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,0, "Use left control to draw objects toward mark."
Text 0,15, "Use space button to increase object speed."
Text 0,30, "Use left shift to create new object and Z button delete objects."
Text 0,45, "Objects:"+Objects+"/300"
DrawScreen
Forever
Code: Select all
SCREEN 800,600,16,0
SetWindow "Effect, By Knoy"
Type Effektit
Field Effekti
Field NewAngle
Field angle
Field EffX1
Field EffX2
Field EffX3
Field EffX4
Field EffX5
Field EffY1
Field EffY2
Field EffY3
Field EffY4
Field EffY5
EndType
CO=1
LOAD=1
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 1"
Color Cbwhite
Text 0,0,"Loading Image 1"
DrawScreen
Ef1=MakeImage(15,3)
DrawToImage Ef1
Color 105,0,0
Box 0,0,13,3
Color 255,0,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 2."
Color Cbwhite
Text 0,0,"Loading Image 2."
DrawScreen
Ef2=MakeImage(15,3)
DrawToImage Ef2
Color 0,105,0
Box 0,0,13,3
Color 0,255,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 3.."
Color Cbwhite
Text 0,0,"Loading Image 3.."
DrawScreen
Ef3=MakeImage(15,3)
DrawToImage Ef3
Color 0,0,105
Box 0,0,13,3
Color 0,0,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 4..."
Color Cbwhite
Text 0,0,"Loading Image 4..."
DrawScreen
Ef4=MakeImage(15,3)
DrawToImage Ef4
Color 0,105,105
Box 0,0,13,3
Color 0,255,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 5...."
Color Cbwhite
Text 0,0,"Loading Image 5...."
DrawScreen
Ef5=MakeImage(15,3)
DrawToImage Ef5
Color 105,105,105
Box 0,0,13,3
Color 255,255,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 6....."
Color Cbwhite
Text 0,0,"Loading Image 6....."
DrawScreen
Ef6=MakeImage(15,3)
DrawToImage Ef6
Color 105,105,0
Box 0,0,13,3
Color 255,255,0
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 7......"
Color Cbwhite
Text 0,0,"Loading Image 7......"
DrawScreen
Ef7=MakeImage(15,3)
DrawToImage Ef7
Color 105,0,105
Box 0,0,13,3
Color 255,0,255
Box 1,1,15,1
DrawToScreen
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Image 8......."
Color Cbwhite
Text 0,0,"Loading Image 8......."
DrawScreen
Kursori=MakeImage(15,15)
DrawToImage kursori
Color 55,55,55
Line 4,5,11,5
Line 4,9,11,9
Line 5,4,5,11
Line 9,4,9,11
Color 105,105,105
Line 2,6,13,6
Line 2,8,13,8
Line 6,2,6,13
Line 8,2,8,13
Color 255,255,255
Line 0,7,15,7
Line 7,0,7,15
DrawToScreen
ShowMouse OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 1........"
Color Cbwhite
Text 0,0,"Loading Object 1........"
DrawScreen
Eff1=MakeObject(180)
PaintObject Eff1,-Ef1
ShowObject Eff1,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 2........."
Color Cbwhite
Text 0,0,"Loading Object 2........."
DrawScreen
Eff2=MakeObject(180)
PaintObject Eff2,-Ef2
ShowObject Eff2,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 3.........."
Color Cbwhite
Text 0,0,"Loading Object 3.........."
DrawScreen
Eff3=MakeObject(180)
PaintObject Eff3,-Ef3
ShowObject Eff3,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 4..........."
Color Cbwhite
Text 0,0,"Loading Object 4..........."
DrawScreen
Eff4=MakeObject(180)
PaintObject Eff4,-Ef4
ShowObject Eff4,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 5............"
Color Cbwhite
Text 0,0,"Loading Object 5............"
DrawScreen
Eff5=MakeObject(180)
PaintObject Eff5,-Ef5
ShowObject Eff5,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 6............."
Color Cbwhite
Text 0,0,"Loading Object 6............."
DrawScreen
Eff6=MakeObject(180)
PaintObject Eff6,-Ef6
ShowObject Eff6,OFF
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Loading Object 7.............."
Color Cbwhite
Text 0,0,"Loading Object 7.............."
DrawScreen
Eff7=MakeObject(180)
PaintObject Eff7,-Ef7
ShowObject Eff7,OFF
Hiiri=MakeObject()
PaintObject Hiiri,-kursori
For i = 1 To 200
DrawGame
Objects+1
LOAD+1
Color 255-LOAD,255-LOAD,255-LOAD
Box 293,0,LOAD,27
Color CbDark
Box 292,-1,217,28,0
Text 2,2,"Creating Object "+CO+COO$
Color Cbwhite
Text 0,0,"Creating Object "+CO+COO$
DrawScreen
CO+1
COO$=String(".",RoundDown((CO-1)/15))
tikut.effektit=New(Effektit)
Random=Rand(0,6)
If Random=0 Then tikut\effekti=CloneObject(Eff1)
If Random=1 Then tikut\effekti=CloneObject(Eff2)
If Random=2 Then tikut\effekti=CloneObject(Eff3)
If Random=3 Then tikut\effekti=CloneObject(Eff4)
If Random=4 Then tikut\effekti=CloneObject(Eff5)
If Random=5 Then tikut\effekti=CloneObject(Eff6)
If Random=6 Then tikut\effekti=CloneObject(Eff7)
MoveObject Tikut\effekti,Rand(-399,399),Rand(-299,299)
RotateObject tikut\effekti,Rand(0,359)
Next i
Repeat
If KulmaNopeus=OFF Then
If KeyHit(CbKeyReturn) And Odotus=0 Then
KulmaNopeus=ON
Locate 0,60
Odotus=6
EndIf
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 2,62,"Press space to change objects turn speed."
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,60,"Press space to change objects turn speed."
Else
Locate 2,62
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Noop=Input("New object turn speed:")
Locate 0,60
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Noop=Input("New object turn speed:")
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 0,75,"Max turnspeed is 100 and minium is 1"
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,75,"Max turnspeed is 100 and minium is 1"
If KeyHit(CbKeyReturn) And Odotus=0 Then
CloseInput
KulmaNopeus=OFF
Odotus=6
EndIf
EndIf
Color CbWhite
If RightKey() Then MoveObject Hiiri,7,0
If LeftKey() Then MoveObject Hiiri,-7,0
If UpKey() Then MoveObject Hiiri,0,-7
If DownKey() Then MoveObject Hiiri,0,7
If ObjectX(hiiri)>400 Then PositionObject Hiiri,-399,ObjectY(Hiiri)
If ObjectX(hiiri)<-400 Then PositionObject Hiiri,399,ObjectY(Hiiri)
If ObjectY(hiiri)>300 Then PositionObject Hiiri,ObjectX(Hiiri),-299
If ObjectY(hiiri)<-300 Then PositionObject Hiiri,ObjectX(Hiiri),299
If KeyDown(CbKeySpace) And KulmaNopeus=OFF Then Speed=5 Else Speed=0
If KeyDown(CbKeyLControl) And KulmaNopeus=OFF Then Turn=1 Else Turn=0
If KeyDown(CbKeyLShift) And KulmaNopeus=OFF And Objects<300 Then
Odotus=3
Objects+1
tikut.effektit=New(Effektit)
Random=Rand(0,6)
If Random=0 Then tikut\effekti=CloneObject(Eff1)
If Random=1 Then tikut\effekti=CloneObject(Eff2)
If Random=2 Then tikut\effekti=CloneObject(Eff3)
If Random=3 Then tikut\effekti=CloneObject(Eff4)
If Random=4 Then tikut\effekti=CloneObject(Eff5)
If Random=5 Then tikut\effekti=CloneObject(Eff6)
If Random=6 Then tikut\effekti=CloneObject(Eff7)
PositionObject Tikut\effekti,ObjectX(hiiri)+Rand(-100,100),ObjectY(hiiri)+Rand(-100,100)
RotateObject tikut\effekti,Rand(0,359)
EndIf
If Odotus>0 Then Odotus-1
For tikut.effektit = Each effektit
tikut\EffX5=tikut\EffX4
tikut\EffY5=tikut\EffY4
tikut\EffX4=tikut\EffX3
tikut\EffY4=tikut\EffY3
tikut\EffX3=tikut\EffX2
tikut\EffY3=tikut\EffY2
tikut\EffX2=tikut\EffX1
tikut\EffY2=tikut\EffY1
tikut\EffX1=ObjectX(tikut\effekti)
tikut\EffY1=ObjectY(tikut\effekti)
DrawToWorld ON,ON,ON
If R=255 Then R=0 Else R+1
If b=255 Then b=0 Else B+1
If G=255 Then g=0 Else g+1
Color r,b,g
If Distance(tikut\EffX1,tikut\EffY1,tikut\EffX2,tikut\EffY2)<20 Then Line tikut\EffX1,tikut\EffY1,tikut\EffX2,tikut\EffY2
Color r-Rand(-30,30),b-Rand(-30,30),g-Rand(-30,30)
If Distance(tikut\EffX2,tikut\EffY2,tikut\EffX3,tikut\EffY3)<20 Then Line tikut\EffX2,tikut\EffY2,tikut\EffX3,tikut\EffY3
Color r-Rand(-60,60),b-Rand(-60,60),g-Rand(-60,60)
If Distance(tikut\EffX3,tikut\EffY3,tikut\EffX4,tikut\EffY4)<20 Then Line tikut\EffX3,tikut\EffY3,tikut\EffX4,tikut\EffY4
Color r-Rand(-90,90),b-Rand(-90,90),g-Rand(-90,90)
If Distance(tikut\EffX4,tikut\EffY4,tikut\EffX5,tikut\EffY5)<20 Then Line tikut\EffX4,tikut\EffY4,tikut\EffX5,tikut\EffY5
If turn=1 Then
tikut\newangle=GetAngle2(tikut\effekti,hiiri)
tikut\angle=CurveAngle(tikut\newangle,tikut\angle,(Noop+Rand(-10,10)))
RotateObject tikut\effekti,(tikut\angle+Rand(-1,1))
EndIf
'TurnObject tikut\effekti,Rand(-1,1)
tikut\angle=ObjectAngle(tikut\effekti)
MoveObject tikut\effekti,(Float(Distance2(tikut\effekti,hiiri))/100)+Rand(0,3)+Speed
If ObjectX(tikut\effekti)>410 Then PositionObject tikut\effekti,-409,ObjectY(tikut\effekti)
If ObjectX(tikut\effekti)<-410 Then PositionObject tikut\effekti,409,ObjectY(tikut\effekti)
If ObjectY(tikut\effekti)>310 Then PositionObject tikut\effekti,ObjectX(tikut\effekti),-309
If ObjectY(tikut\effekti)<-310 Then PositionObject tikut\effekti,ObjectX(tikut\effekti),309
If KeyDown(CbKeyZ) And KulmaNopeus=OFF And Odotus=0 And Objects>1 Then
Odotus=3
Objects-1
DeleteObject tikut\effekti
Delete tikut
EndIf
Next tikut
DrawToWorld OFF,OFF,OFF
Color RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0)),RoundUp((Objects/2)+Rand(-15,0))
Text 2,2, "Use left control to draw objects toward mark."
Text 2,17, "Use space button to increase object speed."
Text 2,32, "Use left shift to create new object and Z button delete objects."
Text 2,47, "Objects:"+Objects+"/300"
Color RoundUp((Objects/2)+105),RoundUp((Objects/2)+105),RoundUp((Objects/2)+105)
Text 0,0, "Use left control to draw objects toward mark."
Text 0,15, "Use space button to increase object speed."
Text 0,30, "Use left shift to create new object and Z button delete objects."
Text 0,45, "Objects:"+Objects+"/300"
DrawScreen
Forever
Code: Select all
aika=10
pisteet=0
x=120
y=120
Text 120,120,"paina!"
Repeat
If KeyHit(cbkeyspace) Then pisteet+1
If aika=0 Then MakeError "sait "+pisteet+" pistettä !!!"
If Timer() - aik > 1000 Then
aik=Timer()
aika-1
End If
Text 20,20,"aika:"+aika
Text 40,40,"pisteet:"+pisteet
Box x,y,60,20, ON
Color Rand(1,255),Rand(1,255),Rand(1,255)
DrawScreen
Forever
Code: Select all
x=120
y=120
x2=200
y2=200
x3=100
y3=100
tark=0
aika=0
Repeat
Text 20,20,"aika:"+aika
Text x,y,"#"
Text x2,y2,"!"
Text x3,y3,"?"
If LeftKey() Then x-1
If RightKey() Then x+1
If DownKey() Then y+1
If UpKey() Then y-1
If x=200 And y=200 Then
tark+1
y2=10000
x2=10000
End If
If x=100 And y=100 Then
tark+1
y3=10000
x3=10000
End If
If tark=2 Then
MakeError "voitit pelin ajassa"+aika
End If
If Timer() - ai > 1000 Then
ai=Timer()
aika+1
End If
DrawScreen
Forever
näpytin 53-58 kertaa, en nähnyt lopputulosta, koska error häipyy spacea painamalla. Ja mikä on sen laatikon tarkoitus?ukkeli wrote:no teinpäs ihan pienen spacen
hakkaus pelin nauttikaakommentoikaaCode: Select all
aika=10 pisteet=0 x=120 y=120 Text 120,120,"paina!" Repeat If KeyHit(cbkeyspace) Then pisteet+1 If aika=0 Then MakeError "sait "+pisteet+" pistettä !!!" If Timer() - aik > 1000 Then aik=Timer() aika-1 End If Text 20,20,"aika:"+aika Text 40,40,"pisteet:"+pisteet Box x,y,60,20, ON Color Rand(1,255),Rand(1,255),Rand(1,255) DrawScreen Forever