Rubics Cube?
Übersicht

![]() |
JuMpYBetreff: Rubics Cube? |
![]() Antworten mit Zitat ![]() |
---|---|---|
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.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mich recht entsinne, sollte es im Codarchiv einen beliebig Dimensionalen Rubics Cube geben ![]() 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 THERE 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
this signature is pointless, just waste of time and shouldn't be read by anyone.
- you wasted your time, didn't you? xD |
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
ein dreidimensionales Array ist ein ganz normales Dim-Feld nur statt einer Dimension:
Dim ![]() nutzt du halt 3 und verwaltest so Höhe, Breite und Tiefe. Dim ![]() also zum Beispiel für einen Rubic mit je 5 Würfeln pro Kante: Dim ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() MFG EDIT: Zu langsam ![]() |
||
![]() |
JuMpY |
![]() Antworten mit Zitat ![]() |
---|---|---|
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.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im 3D Bereich sind Sprites aber eigenständige 3D-Objekte ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ein Rubikwürfel ist eigentlich gar nicht so schwierig, wenn man mal die Grundüberlegung hat ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group