Re: Tyhmät kysymykset
Posted: Tue Jan 15, 2008 3:36 pm
Ohjelmassa on kaksi silmukkaa ja toisesta silmukasta pitäis päästä takaisin ekaan mitä tehdä?
(olen jo kokeillut gotosavedlocationia)
(olen jo kokeillut gotosavedlocationia)
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Code: Select all
ekasimlmukka:
Code: Select all
tokasilmukka:
Code: Select all
GoSub ekasilmukka
Code: Select all
Kuva=MakeImage (400,300)
alku:
viivaon=1
hiiriy=1
hiirix=1
Repeat
DrawToScreen
DrawImage kuva,0,0
If hiiriy=1 And hiirix=1 Then hiiri=1 Else hiiri=0
If viivaon=1 And MouseHit(1) Then viiva=1 Else viiva=0
If hiiri=1 And viiva=1 Then
viivax1=MouseX()
viivay1=MouseY()
Exit
EndIf
DrawScreen
Forever
Repeat
DrawImage kuva,0,0
Line viivax1,viivay1,MouseX(),MouseY()
If hiiriy=1 And hiirix=1 Then hiiri=1 Else hiiri=0
If viivaon=1 And MouseHit(1) Then viiva=1 Else viiva=0
If hiiri=1 And viiva=1 Then
viivax2=MouseX()
viivay2=MouseY()
DrawToImage kuva
Line viivax1,viivay1,viivax2,viivay2
DrawToScreen
Goto alku
EndIf
If MouseHit(2) Then SaveImage kuva,"data/kuva.bmp"
DrawToScreen
DrawScreen
Forever
Testasin ja se pomppii silmukasta toiseen.Vika taitaa olla muussa koodissa.nevssons wrote:Sama juttu gotolla ja gotosavedgamella
voisko joku tehä vian määrityksen?
Code: Select all
koodia
se toimii jos goton poistaa mutta alku pistettä ei voi vaihtaaM.R wrote:Testasin ja se pomppii silmukasta toiseen.Vika taitaa olla muussa koodissa.nevssons wrote:Sama juttu gotolla ja gotosavedgamella
voisko joku tehä vian määrityksen?
Code: Select all
koodia
Rajua purkkaa! Venyy ja paukkuu.nevssons wrote:se toimii jos goton poistaa mutta alku pistettä ei voi vaihtaa
Code: Select all
canvas = MakeImage(ScreenWidth(), ScreenHeight())
drawMode = False
startX = 0
startY = 0
Repeat
If MouseHit(1) Then
If drawMode Then
DrawToImage canvas
Line startX, startY, MouseX(), MouseY()
DrawToScreen
EndIf
startX = MouseX()
startY = MouseY()
drawMode = True
EndIf
If MouseHit(2) Then drawMode = False
DrawImage canvas, 0, 0
If drawMode Then Line startX, startY, MouseX(), MouseY()
DrawScreen
Forever
Code: Select all
Function RowText(st$,x,y,x2,center=0)
If x + TextWidth(st$) < x2 Then
If center = ON Then Text (x+x2)/2-TextWidth(st$)/2,y,st$ Else Text x,y,st$
Else
For i = 1 To CountWords(st$)
word$ = GetWord(st$,i)
If x + TextWidth(sentence$) + TextWidth(word$) > x2 Then
If center = ON Then
Text (x + x2)/2 - TextWidth(sentence$)/2, y, sentence$
Else
Text x, y, sentence$
EndIf
sentence$ = ""
y = y + TextHeight("I")
EndIf
sentence$ = sentence$ + word$ + " "
Next i
If sentence$ <> "" Then
If center = ON Then Text (x+x2)/2-TextWidth(sentence$)/2,y,sentence$ Else Text x,y,sentence$
EndIf
EndIf
End Function
Näin:iTKEVAnAKKI wrote:Miten saan tällä funktiolla rivitetyn lauseen rivien määrän selville?
Code: Select all
lause$ = "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum"
Repeat
Text 0,0,"Rivejä: "+ReturnRows(lause,5,30,200)
rowtext(lause,5,30,200)
DrawScreen
Forever
Function ReturnRows(st$,x,y,x2)
If x + TextWidth(st$) < x2 Then
y = 1
Else
For i = 1 To CountWords(st$)
word$ = GetWord(st$,i)
If x + TextWidth(sentence$) + TextWidth(word$) > x2 Then
sentence$ = ""
y = y + TextHeight("I")
EndIf
sentence$ = sentence$ + word$ + " "
Next i
EndIf
Return (y / TextHeight("I"))-1
EndFunction
Function RowText(st$,x,y,x2,center=0)
If x + TextWidth(st$) < x2 Then
If center = ON Then Text (x+x2)/2-TextWidth(st$)/2,y,st$ Else Text x,y,st$
Else
For i = 1 To CountWords(st$)
word$ = GetWord(st$,i)
If x + TextWidth(sentence$) + TextWidth(word$) > x2 Then
If center = ON Then
Text (x + x2)/2 - TextWidth(sentence$)/2, y, sentence$
Else
Text x, y, sentence$
EndIf
sentence$ = ""
y = y + TextHeight("I")
EndIf
sentence$ = sentence$ + word$ + " "
Next i
If sentence$ <> "" Then
If center = ON Then Text (x+x2)/2-TextWidth(sentence$)/2,y,sentence$ Else Text x,y,sentence$
EndIf
EndIf
End Function
Code: Select all
SCREEN 200,100
aloitapeli=LoadObject("media\aloitapeli.bmp")
lopetapeli=LoadObject("media\lopetapeli.bmp")
hiiri=LoadObject ("media\cursor.bmp")
ShowMouse OFF
PositionObject aloitapeli,0,30
PositionObject lopetapeli,0,-20
Repeat
PositionObject hiiri,MouseWX(),MouseWY()
If ObjectsOverlap (hiiri,aloitapeli) And MouseHit(1) Then Goto peli
If ObjectsOverlap (hiiri,lopetapeli) And MouseHit(1) Then End
DrawScreen
Forever
peli:
SCREEN 0,0,0,cbfullscreen
FrameLimit 40
heppu=LoadObject("media\kamu.bmp",72)
tähtäys=LoadObject("media\hiiri.bmp")
huitaisu=LoadAnimObject("Media\huitaisu.bmp",38,50,0,10)
ShowObject huitaisu,OFF
ObjectRange huitaisu,30,51
PositionObject heppu,500,-400
Repeat
PositionObject tähtäys,MouseWX(),MouseWY()
If KeyDown (17) Then TranslateObject heppu,0,2
If KeyDown (30) Then TranslateObject heppu,-2,0
If KeyDown (31) Then TranslateObject heppu,0,-2
If KeyDown (32) Then TranslateObject heppu,2,0
If MouseHit(1) Then
PaintObject heppu,huitaisu
PlayObject pelihahmo,0,10,0.25
EndIf
PointObject heppu,tähtäys
DrawScreen
Until EscapeKey()
Code: Select all
PlayObject pelihahmo,0,10,0.25
Code: Select all
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
pelaaja = MakeObject()
PaintObject pelaaja, oikea
Repeat
If LeftKey() Then
PaintObject pelaaja, vasen
PlayObject pelaaja, 2, 11
ElseIf RightKey() Then
PaintObject pelaaja, oikea
PlayObject pelaaja, 2, 11
Else
PlayObject pelaaja, 0
EndIf
DrawScreen
Forever
Code: Select all
kuva = MakeImage(400, 300)
eliON = False
elix = 0
eliy = 0
hiirix=True
hiiriy=True
elipsi=True
Repeat
ristix1=MouseX() -5
ristiy1=MouseY() -5
ristix2=MouseX() +5
ristiy2=MouseY() +5
If hiirix And hiiriy Then hiiri=True Else hiiri=False
If elipsi And MouseHit(1) Then eli=True Else eli=False
If hiiri Then
ShowMouse OFF
Line ristix1,MouseY(),ristix2,MouseY()
Line MouseX(),ristiy1,MouseX(),ristiy2
Else
ShowMouse ON
EndIf
If hiiri And eli Then
If elion Then
DrawToImage kuva
Ellipse elix, eliy, Distance (elix, eliy, MouseX(),MouseX()),Distance (elix, eliy, MouseY(),MouseY()),0
DrawToScreen
elinon=True
EndIf
eliX = MouseX()
eliY = MouseY()
elion = True
EndIf
If elinon Then
elion=False
elinon=False
EndIf
DrawImage kuva, 0, 0
If elion Then Ellipse elix, eliy, Distance (elix, elix, MouseX(),MouseX()),Distance (eliy, eliy, MouseY(),MouseY()),0
If MouseHit(3) Then SaveImage kuva,"images/kuva.bmp"
DrawScreen
Forever
Olipas nolo virhe. Kiitos kuitenkin!Jonez wrote:Kumpikin mav tulee samasta syystä: Kun menet peliin, paint hiiren 1-nappulaa. Kun lyöt, painat hiiren 1-nappulaa. Kun hiiren 1-nappulaa painaa, ajetaan koodi:Objektia pelihahmo ei ole olemassakaan.Code: Select all
PlayObject pelihahmo,0,10,0.25
Edit.
Suosittelen tekemään ton huitaisun tähän malliin:Eli sulla on yks objekti jolle annetaan kaikki komennot: Tätä objektia (tässä objektin nimi on "pelaaja") liikutetaa, animoidaan jne. Kun halutaan vaihtaa objektin ulkonäköä (esim. tässä seisomisesta juoksuksi), se objekti maalataan uudella ulkonäöllä (paintobject pelaaja, vasen, tai esim. paintobject pelaaja, huitaisu). Kun objekti tekee jotain, käytetään komentoa PlayObject pelaaja.Code: Select all
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13) MaskObject oikea,cbMagenta ShowObject oikea,OFF vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13) MaskObject vasen,cbMagenta ShowObject vasen,OFF pelaaja = MakeObject() PaintObject pelaaja, oikea Repeat If LeftKey() Then PaintObject pelaaja, vasen PlayObject pelaaja, 2, 11 ElseIf RightKey() Then PaintObject pelaaja, oikea PlayObject pelaaja, 2, 11 Else PlayObject pelaaja, 0 EndIf DrawScreen Forever
Eli tarvitset:
objektin jolle tehdään kaikki mitä halutaan: Liikutus, animointi jne.
Muut objektit joilla ainoastaan maalataan tämä eka objekti.
Code: Select all
SCREEN 600,400
Type AMMUS
Field obj
End Type
FrameLimit 40
ukkoei=LoadAnimObject("Media\plrun_unarmed.png",16,16,0,7,32)
ShowObject ukkoei,OFF
pati=LoadObject("Media\bullet.png",16)
ShowObject pati,OFF
ShowMouse OFF
map=LoadMap("media\gtatest.til","media\tilesetgta.png")
car=LoadObject("media\guy.bmp",72)
MaskObject map, 255,0,255
ClsColor cbwhite
ukko = MakeObject(32)
PaintObject ukko,ukkoei
selection=1
point=1
Repeat
CloneCameraPosition ukko
RotateObject ukko, GetAngle(ObjectX(ukko),-ObjectY(ukko),MouseWX(),-MouseWY())
TranslateObject ukko, KeyDown(cbkeyd)*3-KeyDown(cbkeya)*3,KeyDown(cbkeyw)*3-KeyDown(cbkeys)*3
If KeyDown(cbkeyw) Or KeyDown(cbkeys) Or KeyDown(cbkeya) Or KeyDown(cbkeyd) Then PlayObject ukko, 0,8,0.3
If Not KeyDown(cbkeyw) Then
If Not KeyDown(cbkeys) Then
If Not KeyDown(cbkeya) Then
If Not KeyDown(cbkeyd) Then PlayObject ukko, OFF
EndIf
EndIf
EndIf
MoveObject car,3
For y=1 To MapHeight()
For x=1 To MapWidth()
If GetMap2(3,x,y)=point Then curvepointobject2(car,x,y,10)
If GetMap(3,ObjectX(ukko),ObjectY(ukko))=point Then point+1
Next x
Next y
If point>4 Then point=1
If MouseDown(1) And reload=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj,movef,mover
reload=gunreload
If dual=1 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj,movef,mover*-1
reload=gunreload
EndIf
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,12
Next luoti
If selection=1 Then
PaintObject ukko,ukkoei
dmg=1
dual=1
movef=8
mover=10
gunreload=5
EndIf
DrawGame
Color cbred
Line MouseX()-5,MouseY(),MouseX()+5,MouseY()
Line MouseX(),MouseY()+5,MouseX(),MouseY()-5
DrawScreen
Until EscapeKey()
Function CurvePointObject2(_obj, x, y, _smoothness = 5)
angle# = ObjectAngle(_obj)
newangle# = GetAngle(ObjectX(_obj),ObjectY(_obj),x,y )
angle# = CurveAngle(newangle, angle, _smoothness)
RotateObject _obj, angle
EndFunction