vertexe verbinden

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bjh

Betreff: vertexe verbinden

BeitragFr, Aug 12, 2011 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich bin gerade dabei ein programm zu schreiben, das mir aus einer 128 iger bildatei ein meshterrain( mit 32258 polygonen) erstellt.
bis jetzt läuft das verbinden der vertexe noch nicht so schnell, weil ich das mit einem type mache.
128*128=16384 type einträge.
danach verbinde ich die vertexe so:

BlitzBasic: [AUSKLAPPEN]
	For i=1 To 127
For o=1 To 127
m.m=First m
For p=1 To x
m.m=After m
Next
v1=m\m
m.m=First m
For p=1 To x+1
m.m=After m
Next
v2=m\m
m.m=First m
For p=1 To x+128
m.m=After m
Next
v3=m\m
m.m=First m
For p=1 To x+129
m.m=After m
Next
v4=m\m
AddTriangle(maps,v2,v1,v3)
AddTriangle(maps,v2,v3,v4)
x=x+1
Next
x=x+1
Next


auf diese art funktioniert es zwar, aber es muss andauernd der ganze type durchsucht werden.

hat jemand eine bessere lösung für mich?

Xeres

Moderator

BeitragFr, Aug 12, 2011 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten benutzt du ein 2D Array um den direkten Zugriff zu haben - kannst du auch mit Types kombinieren:
Code: [AUSKLAPPEN]
Dim Terrain.TypeName(x,y)


Edit: Wenn du 3mal "m" als Typename, Instanzname und ein Field verwendest, beschwer dich nicht wegen undurchsichtigen Bugs...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragFr, Aug 12, 2011 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo xerxes,

kannst du mir das bitte erklären.
ich hab kein plan, wie ich das umsetzten soll.

also x und y sind dann position_x und position_z und der type speichert die höhe?

ich sollte erstmal schauen, wie das mit Dim funktioniert. Wink
programmiere schon fast ein jahr mit b3d und hab noch nie Dim verwendet. Very Happy
danke für deine hilfe

Xeres

Moderator

BeitragFr, Aug 12, 2011 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, Breite & Tiefe sollten ein gleichmäßiges Gitter aufspannen. Aus dem Bild ließt du die passenden Höheninformationen aus.
Wenn du noch nie mit Dim gearbeitet hast, solltest du dich in der Tat erst mal damit auseinander setzten. Das Prinzip ist das selbe wie bei einer Tilemap, nur, dass man nicht das Bild(Frame) für x,y Koordinaten speichert, sondern die Höhe. Aus dem Array kann man leicht auf die benachbarten Punkte zugreifen (x+1,y; x-1,y usw.) um alles zu einem Gitter zusammen zu fügen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragFr, Aug 12, 2011 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
tilemaps hab ich auch noch nie gebraucht. Wink

ich probier einfach mal ein bisschen rum

Midimaster

BeitragFr, Aug 12, 2011 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
also vom system her müsste das doch so gehen, oder?

BlitzBasic: [AUSKLAPPEN]
Dim Map(128,128)
LockBuffer ImageBuffer(Bild)
For x=0 To 127
For Z=0 To 127
Y=ReadPixelFast(X,Y)
;Vertex aus X , Z und Y
Vertex=AddVertex ( surface,x,y,z )
Map(x,z)=Vertex
Next
Next

For x=0 To 126
For Z=0 To 126
Vertex1 = Map(x,y)
Vertex2 = Map(x,y+1)
Vertex3 = Map(x+1,y)
Vertex4 = Map(x+1,y+1)

AddTriangle surface, Vertex2 ,Vertex1 ,Vertex3
AddTriangle surface, Vertex2 ,Vertex3 ,Vertex4
Next
Next


aber ohne Gewähr...
  • Zuletzt bearbeitet von Midimaster am Fr, Aug 12, 2011 22:50, insgesamt 2-mal bearbeitet
 

PhillipK

BeitragFr, Aug 12, 2011 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Tilemap ist ein wenig spezifischer. Bei dem Vorschlag handelt es sich nur um einen Array, der die XY koordinaten wiederspiegelt Smile
Lediglich eine schöne, simple lösung. Mit den höhen kannst du doch alles erarbeiten, oder?
 

bjh

BeitragFr, Aug 12, 2011 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
danke midimaster, werd ich gleich ausprobieren.
 

bjh

BeitragFr, Aug 12, 2011 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab das jetzt umgeschrieben, hab verstanden, wie dim funktioniert und es geht viel schneller:

BlitzBasic: [AUSKLAPPEN]
m=CreateMesh()
s=CreateSurface(m)

mm=LoadImage("gfx\map.png")
DrawImage mm,0,0
Dim map(128,128)
For x=0 To 127
For z=0 To 127
yy=ReadPixel(x,z)
y=yy And $FF
v=AddVertex(s,x,y,z)
map(x,z)=v
Next
Next

For x=0 To 126
For y=0 To 126
v1=map(x,y)
v2=map(x,y+1)
v3=map(x+1,y)
v4=map(x+1,y+1)

AddTriangle s,v1,v2,v3
AddTriangle s,v3,v2,v4
Next
Next


noch ein bisschen optimieren und alles ist gut.
danke an alle Very Happy Cool
 

PhillipK

BeitragFr, Aug 12, 2011 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht doch schon gut aus Smile

Ich wäre so doof, das ganze in einer Schleife zu lösen und immer wenn x > 0 und x grade ist, ebenso bei y, eine Triangle zu adden.

Darf ich allerdings fragen, warum du variablennamen wie m, s, mm verwendest?
Im programm taucht hinterher eh nichts davon auf. Die namen dienen dir als Programmierer dazu, die Variablen zu erklären und auseinander zu halten. Wenn du in nem jahr auf deinen Code guckst, wirst du es schwer haben, sowas zu lesen Very Happy
Für mesh/Surface würde sich zb TerrainMesh und TerrainSurface anbieten Smile die grafik hingegen ist nur temporär, da könnte sich ein Temp-präfix (zb tmpImg? *g*) gut machen.
 

bjh

BeitragFr, Aug 12, 2011 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist meine art zu programmieren Wink

ich programmiere meistens egoshooter, die immer den selben aufbau haben.
die projekte hab ich aber immer wegen irgendwelchen sachen abgebrochen und neu angefangen.

bei den variablen weiß ich immer, wozu das gehört, weil ich es schon immer so gemacht hab.
und anfangs hatte ich nur die demo und da hab ich versucht zeichen zu sparen. Wink
und ich hab keine lust "verständlicher" zu programmieren. Very Happy

bis jetzt hatte ich noch keine schwierigkeiten.

das ist mein aktuelles spiel Very Happy
ein beispiel:

BlitzBasic: [AUSKLAPPEN]
Type k
Field k,k2,s,c
End Type

Type h
Field h,d,z#,s
End Type

Type w
Field w
End Type

timer=CreateTimer(60)
Graphics3D 0,0,32,1
AmbientLight 255,255,255
SeedRnd MilliSecs()

font=LoadFont(arial,50,1)
SetFont font

Global man_k=LoadMesh("mesh\man\k.b3d"),man_h1=LoadMesh("mesh\man\h1.b3d"),man_h2=LoadMesh("mesh\man\h2.b3d")
Global man_b=LoadMesh("mesh\man\b.b3d"),man_f1=LoadMesh("mesh\man\f1.b3d"),man_f2=LoadMesh("mesh\man\f2.b3d")
Global waffe_g36c1=LoadMesh("mesh\waffen\g36c\1.b3d"),waffe_g36cm=LoadMesh("mesh\waffen\g36c\m.b3d"),waffe_g36cs=LoadMesh("mesh\waffen\g36c\3.b3d")
Global waffe_g36cl=LoadMesh("mesh\waffen\g36c\2.b3d"),waffe_g36ch=LoadMesh("mesh\waffen\g36c\h.b3d")

Global kk=CreateMesh()
Global kk2=CreateMesh()
create_kugel()

Global schritt=LoadSound("sfx\schritt.wav")

Global s_g36c1=LoadSound("sfx\waffen\g36c\1.wav"),s_g36c2=LoadSound("sfx\waffen\g36c\2.wav")
Global s_g36c3=LoadSound("sfx\waffen\g36c\3.wav"),s_g36c4=LoadSound("sfx\waffen\g36c\4.wav")

Global g36cmaga=LoadImage("gfx\g36cmaga.png")

Global shot#,mxs#,mys#,m_laufen#,m_laufen2#,m_lanim#,m_fd#,zoom,m_ls,m_rs,nachladen#,springen#,haltung

Global m_b=CopyEntity(man_b),m_k=CopyEntity(man_k,m_b),m_kp=CreatePivot(m_k)
Global m_rh1=CopyEntity(man_h1,m_k),m_rh2=CopyEntity(man_h1,m_rh1),m_rh3=CopyEntity(man_h2,m_rh2)
Global m_lh1=CopyEntity(man_h1,m_k),m_lh2=CopyEntity(man_h1,m_lh1),m_lh3=CopyEntity(man_h2,m_lh2)
Global m_rf1=CopyEntity(man_f1,m_b),m_rf2=CopyEntity(man_f1,m_rf1),m_rf3=CopyEntity(man_f2,m_rf2)
Global m_lf1=CopyEntity(man_f1,m_b),m_lf2=CopyEntity(man_f1,m_lf1),m_lf3=CopyEntity(man_f2,m_lf2)
Global m_w_g36c1=CopyEntity(waffe_g36c1,m_k),m_w_g36cm=CopyEntity(waffe_g36cm,m_w_g36c1)
Global m_w_g36cl=CopyEntity(waffe_g36cl,m_w_g36c1),m_w_g36cs=CopyEntity(waffe_g36cs,m_w_g36c1)
Global m_w_g36c_loaded=30,m_w_g36c_muni=5

create_player()

cam=CreateCamera(m_k)
CameraClsColor cam,100,150,255
MoveEntity cam,0,1.8,1
CameraRange cam,.5,10000

Dim mapd(127,127)
create_map()

Global wasserp=CreatePivot()
Gosub create_water
create_water()

sky=CreateSphere(8,cam)
EntityAlpha sky,.5
FlipMesh sky
ScaleMesh sky,50,50,50
EntityOrder sky,1
skyt=LoadTexture("gfx\s.png")
ScaleTexture skyt,.5,.5
EntityTexture sky,skyt

Collisions 1,2,2,3
Collisions 3,2,2,1
SetBuffer BackBuffer()

While Not KeyHit(1)
update_player()
update_k_and_h()
update_water()

RotateEntity sky,0,0,0,1

If KeyHit(203) wf=1-wf
WireFrame wf

UpdateWorld
RenderWorld

update_player_txt()

Flip 0
WaitTimer timer
Wend
End

Function update_player_txt()
Color 50,50,50
Rect GraphicsWidth()-240,GraphicsHeight()-75,240,75
Color 200,200,200
If waffe=0
Text GraphicsWidth()-60,GraphicsHeight()-55,m_w_g36c_loaded

x=GraphicsWidth()-100
For i=1 To m_w_g36c_muni
DrawImage g36cmaga,x,GraphicsHeight()-60
x=x-30
Next
EndIf
End Function

Function update_k_and_h()
For k.k=Each k
If k\c=0
MoveEntity k\k,0,0,Rnd(80,100)
If EntityCollided(k\k,2)
k\c=1
k\k2=CopyEntity(kk2,k\k)
EntityAlpha k\k,0
EndIf
EndIf
k\s=k\s+1
If k\s>600
If k\c=1 FreeEntity k\k2
FreeEntity k\k : Delete k.k
EndIf
Next
For h.h=Each h
If h\s=0
TranslateEntity h\d,0,-h\z/100,0,1
If h\z<35 MoveEntity h\d,.1,0,-.5+(h\z/50)*(h\z/50)
TurnEntity h\h,Rand(0,20),-Rand(50,80),Rand(0,20)
If EntityCollided(h\d,2) h\s=1
EndIf
h\z=h\z+1
If h\z>300 FreeEntity h\h : Delete h.h
Next
End Function

Function update_player()
mxs=MouseXSpeed()
mys=MouseYSpeed()
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
TurnEntity m_k,mys/5/(zoom+1),0,0
If EntityPitch(m_k)>70 RotateEntity m_k,70,0,0
If EntityYaw(m_k)=180 RotateEntity m_k,90,0,0
If EntityYaw(m_k)=-180 RotateEntity m_k,-90,0,0
TurnEntity m_b,0,-mxs/5/(zoom+1),0

If KeyDown(200) MoveEntity m_b,0,0,10
If KeyDown(208) MoveEntity m_b,0,10,0 : m_fd=0

If waffe=0
If MouseHit(2) And nachladen=0 zoom=1-zoom
If zoom=0
PositionEntity m_w_g36c1,1,.5,4
RotateEntity m_rh1,-28,-72,-18
RotateEntity m_rh2,0,0,-118
RotateEntity m_rh3,-6,-9,38
RotateEntity m_lh1,-72,38,60
RotateEntity m_lh2,0,0,12
RotateEntity m_lh3,16,155,-9
ShowEntity m_w_g36cs
Else
PositionEntity m_w_g36c1,0,1.8,3
RotateEntity m_rh1,-30,-60,-47
RotateEntity m_rh2,0,0,-125
RotateEntity m_rh3,-45,7,98
RotateEntity m_lh1,-74,113,102
RotateEntity m_lh2,0,0,69
RotateEntity m_lh3,29,-106,14
HideEntity m_w_g36cs
EndIf

If MouseDown(1) And shot=0 And m_w_g36c_loaded>0 And nachladen=0
m_w_g36c_loaded=m_w_g36c_loaded-1
shot=5
TurnEntity m_k,-Rnd(2,3)/(zoom+1),0,0
TurnEntity m_b,0,Rnd(-1,1)/(zoom+1),0
PlaySound(s_g36c1)
k.k=New k
k\k=CopyEntity(kk,m_w_g36c1)
EntityType k\k,3
EntityRadius k\k,.1
EntityParent k\k,0
MoveEntity k\k,0,-.8,0
h.h=New h
h\d=CreatePivot(m_w_g36c1)
EntityType h\d,1
TurnEntity h\d,Rand(-5,5),Rand(-5,5),Rand(-5,5)
h\h=CopyEntity(waffe_g36ch,h\d)
MoveEntity h\d,.5,-.75,0
EntityParent h\d,0
EndIf

If shot>0
MoveEntity m_w_g36c1,0,0,-shot/7/(zoom+1)
PositionEntity m_w_g36cl,0,0,-shot/5
TurnEntity m_k,shot/30*(zoom+1),0,0
PositionEntity m_rh1,1.8,-.5,-shot/20
PositionEntity m_lh1,-1.8,-.5,-shot/20
shot=shot-1
Else
PositionEntity m_w_g36cl,0,0,0
EndIf

If m_w_g36c_loaded<30 And shot=0 And nachladen=0 And m_w_g36c_muni>0 And KeyDown(19) nachladen=1

If nachladen>0
zoom=0
nachladen=nachladen+1
If nachladen=25 PlaySound(s_g36c2)
If nachladen=90 PlaySound(s_g36c3)
If nachladen>25 And nachladen<35 PositionEntity m_w_g36cm,0,-((nachladen-20)-5),0
If nachladen>75 And nachladen<95 PositionEntity m_w_g36cm,0,-10+((nachladen-60)-15)/2,0
If nachladen=95 PositionEntity m_w_g36cm,0,0,0 : m_w_g36c_muni=m_w_g36c_muni-1
If nachladen=125 PlaySound(s_g36c4) : m_w_g36c_loaded=30
If nachladen>124 And nachladen<132 PositionEntity m_w_g36cl,0,0,-((nachladen-120)/10-.4)
If nachladen>135 And nachladen<140 PositionEntity m_w_g36cl,0,0,-.8+((nachladen-120)-15)*.2
If nachladen=140 PositionEntity m_w_g36cl,0,0,0
If nachladen=150 nachladen=0
EndIf
EndIf

If EntityCollided(m_b,2)=0
m_fd=m_fd+.01
If springen>0 And haltung=0
MoveEntity m_b,0,springen,0
m_fd=m_fd-.009
EndIf
Else
m_fd=0
springen=0
If KeyDown(57) And haltung=0 springen=1.6 : MoveEntity m_b,0,1,0
EndIf

Select haltung
Case 0
If KeyDown(17)
If m_laufen<30 m_laufen=30
If KeyDown(42) And m_laufen<60 And zoom=0 m_laufen=m_laufen+6 : m_laufen2=0
EndIf
If KeyDown(31) m_laufen=-20
If KeyDown(32) And m_laufen2<.3 m_laufen2=m_laufen2+.1
If KeyDown(30) And m_laufen2>-.3 m_laufen2=m_laufen2-.1
If m_laufen2>0 m_laufen2=m_laufen2-.02
If m_laufen2<0 m_laufen2=m_laufen2+.02
If m_laufen2<0 And m_laufen2>-.02 m_laufen2=0
If m_laufen2>0 And m_laufen2<.02 m_laufen2=0

MoveEntity m_b,m_laufen2,-.1-(100*m_fd),m_laufen*.01

m_lanim=m_lanim+m_laufen*.025
If m_laufen>0 m_laufen=m_laufen-2
If m_laufen<0 m_laufen=m_laufen+2
If m_lanim>40 m_lanim=0
If m_lanim<0 m_lanim=40
SetAnimTime m_rf1,m_lanim
SetAnimTime m_rf2,m_lanim
SetAnimTime m_lf1,m_lanim
SetAnimTime m_lf2,m_lanim
If m_lanim>6 And m_lanim<8 And m_ls=0 PlaySound(schritt) : m_ls=1 : m_rs=0
If m_lanim>26 And m_lanim<28 And m_rs=0 PlaySound(schritt) : m_rs=1 : m_ls=0

If KeyHit(29) haltung=1 : RotateEntity m_rf1,-85,-25,0 : RotateEntity m_rf2,85,0,0 : RotateEntity m_lf1,0,0,0 : RotateEntity m_lf2,90,0,0 : EntityRadius m_b,2,5
Case 1
MoveEntity m_b,0,-.1-(100*m_fd),0
If KeyDown(32) MoveEntity m_b,.2,0,0
If KeyDown(30) MoveEntity m_b,-.2,0,0
If KeyDown(17) MoveEntity m_b,0,0,.25
If KeyDown(31) MoveEntity m_b,0,0,-.15

If KeyHit(29) EntityRadius m_b,2,9 : haltung=0 : MoveEntity m_b,0,4.5,0
End Select
End Function

Function create_player()
MoveEntity m_b,0,500,0
EntityRadius m_b,2,9
EntityType m_b,1
MoveEntity m_k,0,5.7,0
EntityType m_kp,1
EntityRadius m_kp,2

MoveEntity m_rh1,1.8,-.5,0 : MoveEntity m_rh2,0,-2.6,0 : MoveEntity m_rh3,.1,-2.6,0
MoveEntity m_lh1,-1.8,-.5,0 : MoveEntity m_lh2,0,-2.6,0 : MoveEntity m_lh3,-.1,-2.6,0
MoveEntity m_rf1,.9,-.3,0 : MoveEntity m_rf2,0,-4,0 : MoveEntity m_rf3,0,-4.3,0
MoveEntity m_lf1,-.9,-.3,0 : MoveEntity m_lf2,0,-4,0 : MoveEntity m_lf3,0,-4.3,0

RotateEntity m_rf1,20,0,0 : SetAnimKey m_rf1,0 : RotateEntity m_rf1,-20,0,0 : SetAnimKey m_rf1,10 : RotateEntity m_rf1,-30,0,0
SetAnimKey m_rf1,20 : RotateEntity m_rf1,0,0,0 : SetAnimKey m_rf1,30 : RotateEntity m_rf1,20,0,0 : SetAnimKey m_rf1,40 : AddAnimSeq m_rf1,40
RotateEntity m_rf2,20,0,0 : SetAnimKey m_rf2,0 : RotateEntity m_rf2,50,0,0 : SetAnimKey m_rf2,10 : RotateEntity m_rf2,20,0,0
SetAnimKey m_rf2,20 : RotateEntity m_rf2,0,0,0 : SetAnimKey m_rf2,30 : RotateEntity m_rf2,20,0,0 : SetAnimKey m_rf2,40 : AddAnimSeq m_rf2,40
RotateEntity m_lf1,-30,0,0 : SetAnimKey m_lf1,0 : RotateEntity m_lf1,0,0,0 : SetAnimKey m_lf1,10 : RotateEntity m_lf1,20,0,0
SetAnimKey m_lf1,20 : RotateEntity m_lf1,-20,0,0 : SetAnimKey m_lf1,30 : RotateEntity m_lf1,-30,0,0 : SetAnimKey m_lf1,40 : AddAnimSeq m_lf1,40
RotateEntity m_lf2,20,0,0 : SetAnimKey m_lf2,0 : RotateEntity m_lf2,0,0,0 : SetAnimKey m_lf2,10 : RotateEntity m_lf2,20,0,0
SetAnimKey m_lf2,20 : RotateEntity m_lf2,50,0,0 : SetAnimKey m_lf2,30 : RotateEntity m_lf2,20,0,0 : SetAnimKey m_lf2,40 : AddAnimSeq m_lf2,40
End Function

Function create_kugel()
kks=CreateSurface(kk)
kkv1=AddVertex(kks,0,0,-10)
kkv2=AddVertex(kks,0,.2,0)
kkv3=AddVertex(kks,.2,0,0)
kkv4=AddVertex(kks,-.2,0,0)
AddTriangle(kks,kkv1,kkv2,kkv3)
AddTriangle(kks,kkv3,kkv2,kkv4)
AddTriangle(kks,kkv3,kkv4,kkv1)
AddTriangle(kks,kkv1,kkv4,kkv2)
EntityColor kk,200,150,0
kks2=CreateSurface(kk2)
kkv12=AddVertex(kks2,0,0,-.2)
kkv22=AddVertex(kks2,0,.1,0)
kkv32=AddVertex(kks2,.1,0,0)
kkv42=AddVertex(kks2,-.1,0,0)
AddTriangle(kks2,kkv12,kkv22,kkv32)
AddTriangle(kks2,kkv32,kkv22,kkv42)
AddTriangle(kks2,kkv32,kkv42,kkv12)
AddTriangle(kks2,kkv12,kkv42,kkv22)
EntityColor kk2,0,0,0
End Function

.create_water
Global wasser=CreateMesh(),wassert=LoadTexture("gfx\w.png"),wassers=CreateSurface(wasser),ptw#
Global wv1=AddVertex(wassers,0,0,0,0,0),wv2=AddVertex(wassers,1,0,0,1,0),wv3=AddVertex(wassers,2,0,0,2,0),wv4=AddVertex(wassers,3,0,0,3,0)
Global wv5=AddVertex(wassers,0,0,1,0,1),wv6=AddVertex(wassers,1,0,1,1,1),wv7=AddVertex(wassers,2,0,1,2,1),wv8=AddVertex(wassers,3,0,1,3,1)
Global wv9=AddVertex(wassers,0,0,2,0,2),wv10=AddVertex(wassers,1,0,2,1,2),wv11=AddVertex(wassers,2,0,2,2,2),wv12=AddVertex(wassers,3,0,2,3,2)
Global wv13=AddVertex(wassers,0,0,3,0,3),wv14=AddVertex(wassers,1,0,3,1,3),wv15=AddVertex(wassers,2,0,3,2,3),wv16=AddVertex(wassers,3,0,3,3,3)
Global wvh1#=Rnd(0,1),wvh2#=Rnd(0,1),wvh3#=Rnd(0,1),wvh4#=Rnd(0,1),wvh5#=Rnd(0,1),wvh6#=Rnd(0,1),wvh7#=Rnd(0,1),wvh8#=Rnd(0,1),wvh9#=Rnd(0,1)
Global wva1=Rand(0,1),wva2=Rand(0,1),wva3=Rand(0,1),wva4=Rand(0,1),wva5=Rand(0,1),wva6=Rand(0,1),wva7=Rand(0,1),wva8=Rand(0,1),wva9=Rand(0,1)
Return

Function create_water()
MoveEntity wasserp,0,40,0
EntityTexture wasser,wassert
ScaleEntity wasser,20,2,20
EntityAlpha wasser,.5
AddTriangle(wassers,wv2,wv1,wv5) : AddTriangle(wassers,wv2,wv5,wv6) : AddTriangle(wassers,wv3,wv2,wv6)
AddTriangle(wassers,wv3,wv6,wv7) : AddTriangle(wassers,wv4,wv3,wv7) : AddTriangle(wassers,wv4,wv7,wv8)
AddTriangle(wassers,wv6,wv5,wv9) : AddTriangle(wassers,wv6,wv9,wv10) : AddTriangle(wassers,wv7,wv6,wv10)
AddTriangle(wassers,wv7,wv10,wv11) : AddTriangle(wassers,wv8,wv7,wv11) : AddTriangle(wassers,wv8,wv11,wv12)
AddTriangle(wassers,wv10,wv9,wv13) : AddTriangle(wassers,wv10,wv13,wv14) : AddTriangle(wassers,wv11,wv10,wv14)
AddTriangle(wassers,wv11,wv14,wv15) : AddTriangle(wassers,wv12,wv11,wv15) : AddTriangle(wassers,wv12,wv15,wv16)
x=-300
z=-300
For i=0 To 9
For o=0 To 9
w.w=New w
w\w=CopyEntity(wasser,wasserp)
PositionEntity w\w,x,-1,z
x=x+60
Next
x=-300
z=z+60
Next

wa=CreateMesh(wasserp)
was=CreateSurface(wa)
EntityTexture wa,wassert
EntityAlpha wa,.5
v1=AddVertex(was,-300,0,-300,-15,-15)
v2=AddVertex(was,300,0,-300,15,-15)
v3=AddVertex(was,-300,0,300,-15,15)
v4=AddVertex(was,300,0,300,15,15)
v5=AddVertex(was,-20300,0,-20300,-1015,-1015)
v6=AddVertex(was,20300,0,-20300,1015,-1015)
v7=AddVertex(was,-20300,0,20300,-1015,1015)
v8=AddVertex(was,20300,0,20300,1015,1015)
AddTriangle(was,v1,v2,v5)
AddTriangle(was,v2,v6,v5)
AddTriangle(was,v4,v3,v7)
AddTriangle(was,v8,v4,v7)
AddTriangle(was,v7,v3,v1)
AddTriangle(was,v7,v1,v5)
AddTriangle(was,v8,v2,v4)
AddTriangle(was,v8,v6,v2)
End Function

Function update_water()
If wva1=1 wvh1=wvh1+Rnd(0.01,0.005) Else wvh1=wvh1-Rnd(0.01,0.005)
If wvh1<0 wva1=1
If wvh1>1 wva1=0
VertexCoords wassers,wv1,0,wvh1,0 : VertexCoords wassers,wv4,3,wvh1,0 : VertexCoords wassers,wv13,0,wvh1,3 : VertexCoords wassers,wv16,3,wvh1,3
If wva2=1 wvh2=wvh2+Rnd(0.01,0.005) Else wvh2=wvh2-Rnd(0.01,0.005)
If wvh2<0 wva2=1
If wvh2>1 wva2=0
VertexCoords wassers,wv2,1,wvh2,0 : VertexCoords wassers,wv14,1,wvh2,3
If wva3=1 wvh3=wvh3+Rnd(0.01,0.005) Else wvh3=wvh3-Rnd(0.01,0.005)
If wvh3<0 wva3=1
If wvh3>1 wva3=0
VertexCoords wassers,wv3,2,wvh3,0 : VertexCoords wassers,wv15,2,wvh3,3
If wva4=1 wvh4=wvh4+Rnd(0.01,0.005) Else wvh4=wvh4-Rnd(0.01,0.005)
If wvh4<0 wva4=1
If wvh4>1 wva4=0
VertexCoords wassers,wv5,0,wvh4,1 : VertexCoords wassers,wv8,3,wvh4,1
If wva5=1 wvh5=wvh5+Rnd(0.01,0.005) Else wvh5=wvh5-Rnd(0.01,0.005)
If wvh5<0 wva5=1
If wvh5>1 wva5=0
VertexCoords wassers,wv6,1,wvh5,1
If wva6=1 wvh6=wvh6+Rnd(0.01,0.005) Else wvh6=wvh6-Rnd(0.01,0.005)
If wvh6<0 wva6=1
If wvh6>1 wva6=0
VertexCoords wassers,wv7,2,wvh6,1
If wva7=1 wvh7=wvh7+Rnd(0.01,0.005) Else wvh7=wvh7-Rnd(0.01,0.005)
If wvh7<0 wva7=1
If wvh7>1 wva7=0
VertexCoords wassers,wv9,0,wvh7,2 : VertexCoords wassers,wv12,3,wvh7,2
If wva8=1 wvh8=wvh8+Rnd(0.01,0.005) Else wvh8=wvh8-Rnd(0.01,0.005)
If wvh8<0 wva8=1
If wvh8>1 wva8=0
VertexCoords wassers,wv10,1,wvh8,2
If wva9=1 wvh9=wvh9+Rnd(0.01,0.005) Else wvh9=wvh9-Rnd(0.01,0.005)
If wvh9<0 wva9=1
If wvh9>1 wva9=0
VertexCoords wassers,wv11,2,wvh9,2

If EntityX(m_b)+60<EntityX(wasserp) MoveEntity wasserp,-60,0,0
If EntityX(m_b)-60>EntityX(wasserp) MoveEntity wasserp,60,0,0
If EntityZ(m_b)+60<EntityZ(wasserp) MoveEntity wasserp,0,0,-60
If EntityZ(m_b)-60>EntityZ(wasserp) MoveEntity wasserp,0,0,60

ptw=ptw+.0005
PositionTexture wassert,ptw,ptw/2
End Function

Function create_map()
map=CreateMesh()
MoveEntity map,-5120,0,-5120
maps=CreateSurface(map)
EntityType map,2
mt=LoadTexture("gfx\mapt1.png")
ScaleTexture mt,128,128
EntityTexture map,mt,0,0
mt1=LoadTexture("gfx\m1.png")
EntityTexture map,mt1,0,1
mt2=LoadTexture("gfx\m2.png")
EntityTexture map,mt2,0,2
mt3=LoadTexture("gfx\m3.png")
EntityTexture map,mt3,0,3
ScaleTexture mt1,.1,.1
ScaleTexture mt2,1,1
ScaleTexture mt3,10,10
RotateTexture mt1,17
RotateTexture mt2,54
RotateTexture mt3,83

mm=LoadImage("gfx\map1.png")
DrawImage mm,0,0
For x=0 To 127
For z=0 To 127
yy=ReadPixel(x,z)
y=yy And $FF
v=AddVertex(maps,x*80,y,z*80,x,z)
mapd(x,z)=v
Next
Next
For x=0 To 126
For y=0 To 126
v1=mapd(x,y)
v2=mapd(x,y+1)
v3=mapd(x+1,y)
v4=mapd(x+1,y+1)

AddTriangle maps,v1,v2,v3
AddTriangle maps,v3,v2,v4
Next
Next

v1=AddVertex(maps,0,0,0)
v2=AddVertex(maps,10160,0,0,127)
v3=AddVertex(maps,0,0,10160,0,127)
v4=AddVertex(maps,10160,0,10160,127,127)
v5=AddVertex(maps,-10000,0,-10000,-125,-125)
v6=AddVertex(maps,20160,0,-10000,252,-125)
v7=AddVertex(maps,-10000,0,20160,-125,252)
v8=AddVertex(maps,20160,0,20160,252,252)
AddTriangle(maps,v1,v2,v5)
AddTriangle(maps,v2,v6,v5)
AddTriangle(maps,v4,v3,v7)
AddTriangle(maps,v8,v4,v7)
AddTriangle(maps,v7,v3,v1)
AddTriangle(maps,v7,v1,v5)
AddTriangle(maps,v8,v2,v4)
AddTriangle(maps,v8,v6,v2)
End Function

Xeres

Moderator

BeitragFr, Aug 12, 2011 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Weder zum angeben noch zum nachmachen geeignet.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragFr, Aug 12, 2011 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich komm damit wunderbar zurecht Wink Cool

Xeres

Moderator

BeitragFr, Aug 12, 2011 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
...das sagen Abhängige auch von ihrem Drogenkonsum.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragFr, Aug 12, 2011 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ich versuche immer mit dem notwendigen zurechtzukommen, weil ich schon früh lernen musste, mit wenig auszukommen.
hatte und hab ne schwere kindheit

aber so schlimm find ich es garnicht Very Happy

BladeRunner

Moderator

BeitragSa, Aug 13, 2011 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Schön dass Du das so siehst, nur wirst Du es schwer haben hier Hilfe zu erhalten, da auch niemand Lust hat durch so einen Wust durchzublicken.
Kannst Dir nun aussuchen was dir lieber ist.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Mr.Keks

BeitragSa, Aug 13, 2011 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code wird im Allgemeinen viel mehr gelesen als geschrieben. Du liest ihn beim Entwickeln - möglicherweise auch nach nen paar Wochen/Jahren - immer wieder, musst ihn vielleicht auch mal anderen zum Lesen geben (zum Beispiel im Forum..), willst vielleicht auch mal andere mitarbeiten lassen oder Teile anderen zur Verfügung stellen. Tatsächlich baut jedes Programm auch auf unzähligen anderen Programmen auf und das ist nur möglich, wenn die Namen irgendwas sinnvolles bedeuten und Strukturen folgen. Stell dir vor, Mark Sibly hätte für die Funktionen und Schlüsselwörter in Blitz3d t, et, g, l, g3d, li statt Type, EndType, Global, Local, Graphics3d und LoadImage verwendet, weil es cool ist mit wenig zurechtzukommen. Das wäre erstens unübersichtlich und zweitens wäre es nicht mit deiner aktuellen Benennungs"konvention" verträglich, da dann schon B3d alle Ein-Buchstaben-Namen belegt. (Wenn dann noch alle Librarys das machen würden, ist eh alles verloren xD)
MrKeks.net
 

bjh

BeitragSa, Aug 13, 2011 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
naja Wink
wenn ich mal etwas für andere schreiben muss, dann würde ich es auch "umschreiben".
aber für mich selbst werde ich das wahrscheinlich nie machen.
da spielt auch die faulheit ein bisschen mit. Very Happy

BladeRunner

Moderator

BeitragSo, Aug 14, 2011 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich behaupte frechweg dass Du mehr Zeit mit deiner Faulheit verlierst als du an Tipparbeit sparst, da es eben immer wieder mal zu Vertippern, Doppelbenennungen oder der leidigen Frage "wtf stands this for?" kommt.
Es ist ja deine Sache, aber ich habe es als Gewinn empfunden als ich endlich mit Sprachen hantierte deren Variablenmnamen nicht auf 2 Zeichen begrenzt waren.
Und den Code umschreiben wenn man mal Hilfe bei was braucht zeigt ja wie widersinnig es ist sich 'die Arbeit zu sparen.'
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

bjh

BeitragSo, Aug 14, 2011 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
bis jetzt wusste ich immer, für was meine variablen stehen.
ich kürze auch nicht alle variablen ab.
aber wenn ich jetzt zum beispiel die kugeln und hülsen, die bei einer waffe rauskommen, benenne ich die types einfach mit k und h.
wenn es eine variable gibt, die das leben speichert, dann benenne ich die nicht mit l sondern mit leben.
ich finde, dass meine abkürzungen trotzdem noch verständlich sind.
und ich benutzt funktionen. früher hab ich das mit gosub gemacht.

naja
vielleicht ändert dich mein programmierstil irgendwann. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group