Rubics Cube?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

JuMpY

Betreff: Rubics Cube?

BeitragSo, Feb 15, 2009 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi zusammen,
ich hab mir überlegt einen b3d-Rubics Cube zu programmieren (was ich aber so bald wahrscheinlich nicht machen werde, weil das meine kenntnisse total übersteigt)

trotzdem, hat das jemand schon probiert/geschafft? ich glaube, die größte schwierigkeit ist, die position jedes einzelnen (insgesamt besteht ein Rubics Cube ja aus 26 einzelnen Würfeln) Würfels zu bestimmen, und daraus abzuleiten zu welchem Würfel er "parent" sein muss

bei der nächsten drehung müsste aber die "parent" abhängigkeit gelöscht werden und neu zugewiesen?

passiert das automatisch wenn ichs neu zuweise oder gibt es einen extra befehl?

(ich hätte unelegant die position mit einer collisionsabfrage mit 26 kleinen, unsichtbaren Kugeln gemacht, und daraus festgestellt wo der Pivot sein muss, wahrscheinlich gibts aber eine schönere Lösung)

und wenn ich die seiten eines würfels in unterschiedlichen farben haben will, muss ich dann auf der textur sie in einem würfelnetz einzeichnen, oder gibts befehle (diese seite diese farbe, die andre seite eine andere farbe)

lg JuMpY
this signature is pointless, just waste of time and shouldn't be read by anyone.

- you wasted your time, didn't you? xD

Mr.Hyde

Newsposter

BeitragSo, Feb 15, 2009 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es nicht mit Parents verwalten, sondern in einem dreidimensionalen Array. Dann kannst du die jeweilige(n) Zeilen und Spalten direkt ansprechen und verschieben/drehen. Dürfte einfacher sein. Ansonsten müsste das durchaus machbar sein. Viel Glück!

Die Farbe musst du, wenn mich nicht alles täuscht (bin nicht so der 3D-Experte), über die Textur vergeben, wobei da zu empfehlen wäre, das mit Sprites zu lösen, die sich an jeweils 3 Seiten des Würfels befinden und diesen als Parent haben.
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen

Xeres

Moderator

BeitragSo, Feb 15, 2009 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich mich recht entsinne, sollte es im Codarchiv einen beliebig Dimensionalen Rubics Cube geben Wink
Da ist er: https://www.blitzforum.de/foru...t=w%FCrfel
(War klar das sowas von Noobody kommt...)
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)
  • Zuletzt bearbeitet von Xeres am So, Feb 15, 2009 17:53, insgesamt einmal bearbeitet

JuMpY

BeitragSo, Feb 15, 2009 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mr.Hyde hat Folgendes geschrieben:
Ich würde es nicht mit Parents verwalten, sondern in einem dreidimensionalen Array. Dann kannst du die jeweilige(n) Zeilen und Spalten direkt ansprechen und verschieben/drehen. Dürfte einfacher sein. Ansonsten müsste das durchaus machbar sein. Viel Glück!

Die Farbe musst du, wenn mich nicht alles täuscht (bin nicht so der 3D-Experte) über die Textur vergeben, wobei da zu empfehlen wäre, das mit Sprites zu lösen, die sich an jeweils 3 Seiten des Würfels befinden und diesen als Parent haben.


es gibt 3d arrays? wie funktionieren die? (oder habe ich das irgentwo überlesen in den tuts die ich durchgearbeitet hab?)

ich bin auch noch ziemlich b3d noob, was sind sprites? (meinst du, dass man anstatt einem einzelnen würfel einen würfel aus 6 verschiedenen Platten baut? der gedanke ist mir auch schon gekommen, aber ich hab mir gedacht dass das es noch ärger kompliziert macht wenn ich anstatt 26 würfeln (mindestens) 36 platten habe

EDIT: @xeres: ich habs mir gedacht dass irgentwer sowas schon gebastelt hat, aber bei suchfunktion "rubics cube" hat er nichts ausgespuckt. merkwürdig vllt bin ich einfach unfähig zu suchen o.O

EDIT2: oh den schreibt man mit "k" am ende Rolling Eyes
this signature is pointless, just waste of time and shouldn't be read by anyone.

- you wasted your time, didn't you? xD

Mr.Hyde

Newsposter

BeitragSo, Feb 15, 2009 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ein dreidimensionales Array ist ein ganz normales Dim-Feld nur statt einer Dimension:

Dim Mein1DFeld(10)

nutzt du halt 3 und verwaltest so Höhe, Breite und Tiefe.

Dim Mein3DFeld(height, width, depth)

also zum Beispiel für einen Rubic mit je 5 Würfeln pro Kante:

Dim Rubic(4, 4, 4)

nun kannst du in einer Schleife die jeweiligen betroffenen Würfel durchgehen. Stell dir das Dimfeld einfach wie deinen Rubic vor, nur dass die Würfel durchnummeriert sind nach Zeile, Spalte und Etage.
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen
  • Zuletzt bearbeitet von Mr.Hyde am So, Feb 15, 2009 18:00, insgesamt einmal bearbeitet

Starwar

BeitragSo, Feb 15, 2009 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays sind theoretisch in ihrer Dimension unbegrenzt.
Sie werden wie 1- oder 2-Dimensionale verwendet.
Code: [AUSKLAPPEN]
Dim test(x,y,z)
(erzeugt eine 3D-Array "test" mit der größe x,y,z, wobei x,y,z bei 0 beginnen)
Code: [AUSKLAPPEN]
test(a,b,c)=12
(setzt den Wert von "test" an a,b,c = 12)
Code: [AUSKLAPPEN]
Print test(a,b,c)
(gibt den Wert von "test" an a,b,c aus)
Mehr unter Dim in der Hilfe.
MFG

EDIT: Zu langsam Razz

JuMpY

BeitragSo, Feb 15, 2009 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
dankedanke!
ich werd das mal durcharbeiten (weil die tuts die ich bis jetzt hatte waren relativ kurz und beschränkt auf gegenstände erstellen und bewegen,.. )

achja und was sind sprites?
this signature is pointless, just waste of time and shouldn't be read by anyone.

- you wasted your time, didn't you? xD

Mr.Hyde

Newsposter

BeitragSo, Feb 15, 2009 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Sprites sind 2D Objekte in der 3D Umgebung. Also eine meist einfach eine Grafik.
https://www.blitzforum.de/help/?subcat=73
Schau dich mal dort um. Wink
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen

Tankbuster

BeitragSo, Feb 15, 2009 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Im 3D Bereich sind Sprites aber eigenständige 3D-Objekte Wink
Quasi eine platte fläche aus 2 Triangles. Darauf kann man natürlich eine Textur packen. Sprites zeigen in Blitz immer auf die Kamera, es sei denn, man wendet SpriteViewMode an. Dann sind Sprites auch frei drehbar.
Twitter
Download Jewel Snake!
Windows|Android

Noobody

BeitragMo, Feb 16, 2009 8:04
Antworten mit Zitat
Benutzer-Profile anzeigen
So ein Rubikwürfel ist eigentlich gar nicht so schwierig, wenn man mal die Grundüberlegung hat Razz
Der Rubikwürfel im Codearchiv funktioniert so, dass die einzelnen Würfelchen des Rubikwürfels als Type in einem 3D - Array gespeichert werden.
So ein Würfelchen hat auch je nochmals 6 Seiten, welche ich separat erstelle und je nach Position einfärbe (mit VertexColor).

Dreht man nun eine Scheibe, so wird aus allen Würfelchen in dieser Scheibe der Mittelpunkt errechnet und um diesen gedreht (mit einfachen Sin/Cos - Berechnungen). Welche Würfel sich in einer Scheibe befinden, kann man ja aus dem Array auslesen.
Erreicht der Drehwinkel 90 Grad, dann werden zusätzlich noch die Würfelchen im Array 'gedreht' - es werden einfach die Plätze so vertauscht, damit sie wieder dem echten Würfel entsprechen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

PSY

BeitragMo, Feb 16, 2009 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi,

vllt könnte man auch einfach die entsprechenden "minicubes" einem Parentpivot übergeben, und dieses dann drehen...

Zur Veranschaulichung folgender Code...(paarmal linke Maustaste drücken)

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()
Dim rubiccube(3,3,3)
cam = CreateCamera()
Global pivot=createpivot()
PositionEntity pivot,4,4,4
PositionEntity cam,-4,16,-5
TurnEntity cam,45,-45,0

;cube basteln
For z=1 To 3
      For y=1 To 3
            For x=1 To 3
                  rubiccube(x,y,z)=createcube()
                  EntityColor rubiccube(x,y,z),rand(255),rand(255),rand(255)
                  PositionEntity rubiccube(x,y,z),x*2,y*2,z*2
            Next
      Next
Next

Repeat
      If MouseHit(1) Then setpivot(rand(1,3))
      TurnEntity pivot,0,1,0
      RenderWorld()
      Flip 1
Until KeyHit(1)


Function setpivot(rand)
For z=1 To 3
      For y=1 To 3
            For x=1 To 3
                  EntityParent rubiccube(x,y,z),0
                  If y=rand Then EntityParent rubiccube(x,y,z),pivot
            Next
      Next
Next
End function


L8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group