Archief - [PROG][C#] TEST : Rubik's cube

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

MacK

Legacy Member
Hallo,

Ik maak even mijn Rubik's cube programma beschikbaar om het eens te laten testen. Bij mij draait het alleszinds zonder problemen, maar ik heb al vaker meegemaakt dat m'n applicaties niet bij andere mensen werken.

Hier vind je het: http://users.pandora.be/CrackNuT/Rubik.rar

Voor diegenen die een Directx error krijgen : Ik heb de Managed Directx distributable ook online gezet. Deze wordt standaard niet geïnstalleerd wanneer je directx installeert. Deze is te vinden op :http://users.pandora.be/CrackNuT/mdxredist.msi

Vereisten:
.Net Framework 2.0
Directx 9.0 c
..

*edit* Momenteel ziet de user interface er niet uit. Het is voornamelijk om m'n RubikRender te testen.
*edit2* Mocht het niet duidelijk zijn, je kan de cubus ook roteren door te klikken en te slepen in het rendergebied.

killgore

Legacy Member
Ik zal het vanavond eens testen, zit hier op men pa zen pc en de beschikking over .net e.d. is hier vrij minimaal (zou me verbazen moest 1.1 er al opstaan^^)

Patience young padawan :p

El_L4mor

Legacy Member
ik heb het eens getest :), tziet er goe uit, maar mssn een systeemke uitvinden zodat ge weet aan welke kant ge draait door op een bepaalde knop te duwen? Nu drukt ge op een kleurke, zonder dat ge weet wat er gaat gebeuren...

MacK

Legacy Member
Wel eigenlijk weet je het wel. De kleur stemt namelijk overeen met het centrum kleur van een kant. (bij een rubik's cube zitten de center cubes vast. Ze kunnen roteren, maar niet verplaatst worden).

Maar idd, het is ietwat onhandig. Momenteel ben ik nog aan het onderzoeken hoe ik de kanten kan laten draaien dmv muisklikken/muisbewegingen op de kanten zelf. (Dus in het rendergebied).

Bij de meeste Online rubik's cubussen is dit zo, maar ik ben alles zelf 'from scratch' aan het schrijven, dus ik moet het nog wat uitzoeken.

*edit* Ik heb vlug een kleine update toegevoegd. Een knop om de cubus te resetten naar de opgeloste status, alsook een knop om de cubus te 'scramblen'. Alsook kan je met de 'W'-toets op je keyboard togglen tussen wireframe/solid. Voor de geïnteresseerden.

*edit2*Ik heb ook de mdx-distributable apart online gezet. Zo moet je geen 3 mb downloaden als je dit reeds geïnstalleerd hebt staan.

killgore

Legacy Member
Azo een overdadig wireframe :x

Welja, enkele opmerkingen:
1) meer antialiasing zou welkom zijn :p.
2) Zorgen dat ie in taskbar komt ook.
3) het roteren moet idd intuïtiever, goede voorstellen ervoor heb ek echter nie, srry :).

MacK

Legacy Member
Thx voor de reply (en de moeite):
1) het wireframe is misschien wat overdadig, maar nu is de zwarte rand rond een kleur hard-coded wat mij beter uitkomt dan textures te moeten gaan gebruiken.

2) Hoe bedoel je in taskbar komen?

3) Ik denk dat ik het weet hoe ik het roteren kan verbeteren. Door bij een muisklik de muiscoördinaten om te zetten kan ik een ray (Vector3) maken. Als ik dan nog m'n minicubes kan laden als een Direct3D.Mesh, dan kan ik gebruik maken van Mesh.Intersect zodat ik kan uitzoeken welke minicube geselecteerd is.

Maar dat zal voor wat later zijn, want momenteel ben ik nog aan het uitzoeken hoe ik de cubus kan oplossen met een Astar - algoritme.

killgore

Legacy Member
Taakbalk bedoelde ik -> ik moet alt tabben om naar het programma te gaan ;).

MacK

Legacy Member
He, nu je het zegt. Das de eerste keer dat dat mij opvalt. Tis aangepast :) . Bedankt voor de opmerking!

MacK

Legacy Member
Na veel met de handen in de haren te zitten, en vooral, na een 1000 lijnen extra code, heb ik de 2de versie van m'n Rubikprogramma "af".

Het ziet er nog praktisch hetzelfde uit als de eerste versie, maar de voornaamste toevoeging is de "Solve" - knop , die , zoals de naam het zegt, een willekeurige kubus oplost.

In een volgende versie zal ik trachten de gebruiker de mogelijk te geven van zelf een kubus in te geven (bvb 1 die hij zelf opgelost krijgt), alsook de achterliggende algoritme's te verbeteren (kortere oplossing vooral).
Alsook zal ik de "besturing" (dus het draaien van de layers) te verbeteren in de volgende versie (dmv van muisklikken in het rendergebied of eventueel muisbewegingen)

Maar goed. Graag had ik m'n programma nog eens aan een test onderworpen.
Je kan het hier vinden:
http://users.pandora.be/CrackNuT/Rubik.rar

alsook vind je de managed directx bestanden hier:
http://users.pandora.be/CrackNuT/mdxredist.msi

Graag jullie commentaar!

M1tch

Legacy Member
nice :p


ik zou wel eens willen weten hoe die solve werkt.


het zijn wel veel stappen die hij moet doen om er te geraken. kan je zo elke cube niet oplossen met max 31 stappen? :unsure:



bij mij werkt het programma prima btw :)

MacK

Legacy Member
Tot nu toe is er geen echt bewijs, maar over het algemeen kan een cube opgelost worden in max 20 stappen. Maar daarvoor heb je databases nodig (wat ik nog niet onder knie heb) , die kunnen dienen als een goede heuristiek voor een Astar - algoritme (IDA).

Mijn techniek bestaat uit een combinatie van A* en Dijkstra , en ik los de kubus op naar bepaalde posities. (WhiteCross , WhiteLayer, Secondlayer) . Daarna maak ik gebruik van een if/else structuur om van de ene positie naar de andere te gaan. Zo ga ik naar (van de onderste laag) PermuteCorners, OrientEdges, OrientCorners, PermuteEdges. (en Solved)

Deze techniek is een beginnersmethode voor het oplossen van een 3x3x3 Cube . Wat voor mij voldoende is :)

killgore

Legacy Member
't is alleszins nie simpel, het feit dat er geen bewijs voor bestaat zegt al genoeg (zelfde als 4-kleuren prob & exact algoritme voor kleurenprobleem :)).

edit: bijna vergeten: werkt deftig :).

edit: uw aantal stappen kan wel tellen ^^

MacK

Legacy Member
Mochten mensen geïnteresseerd zijn in echt optimale oplossingen, dan zoek je best eens op "God's algorithm" en Rubik in google. Dan vind je wel iets.

Eventueel kan je ook zoeken op "CubeExplorer".


En: Bedankt voor de replies!

*edit* killgore, idd, het zijn héél veel stappen. Ik hoop dit op te lossen door meer MoveSequences toe te voegen, die me helpen om nog efficiënter naar bepaalde posities te geraken. Maar na 1500+ lijnen code aan MoveSequences te schrijven, hou ik er even mee op :). (Toegegeven: het is door een design fout dat het zoveel lijnen code kost, maar dit project is maar voor de fun..)

killgore

Legacy Member
foutje gevonden:

rubikfout.gif


Na nog is op solve klikken was hij wel correct :s. Kan mssch zijn omdat em in bg draaide.

Nog iets: werk met een hidden surface remover, ik zie nu soms achterliggende vierkantjes er precies doorkomen (kunde op dees screen ook zien trouwens)

edit: wat ik wel grappg vind is dat als je em van solvede situatie 1 keer laat draaien en op solve drukt dat het hem weer 150+ stappen kost ^^

MacK

Legacy Member
't is de bedoeling om fun te zijn hé :)

En voor die fout: kzal eens door mijn movesequences neuzen om te kijken of ik ergens een fout er in gekregen heb.

Bedankt voor de melding!

*edit* kheb een kleine update gedaan. De fout van Killgore zou er uit moeten zijn, en vanaf nu is ook de cubus niet meer transparant. Kvond het persoonlijk wel een leuk effectje, maar het toont ook wat popup, die nu minder zichtbaar is.

*edit2* En nu is het me even beu, want ik heb m'n hele weekend er al aan besteed :). Volgende update zal later volgen.

Nog een vlugge vraag: Mocht ik dit porten naar openGL (wat normaal gezien bij de meesten toch standaard aanwezig is), zouden jullie dit mooi vinden als screensaver? Fullscreen, tragere animatie en zonder controls natuurlijk..

M1tch

Legacy Member
het zou toch beter zijn dan mijn standaard XP screensaver :p


bring it on!

killgore

Legacy Member
MacK zei:
't is de bedoeling om fun te zijn hé :)

En voor die fout: kzal eens door mijn movesequences neuzen om te kijken of ik ergens een fout er in gekregen heb.

Bedankt voor de melding!

*edit* kheb een kleine update gedaan. De fout van Killgore zou er uit moeten zijn, en vanaf nu is ook de cubus niet meer transparant. Kvond het persoonlijk wel een leuk effectje, maar het toont ook wat popup, die nu minder zichtbaar is.

*edit2* En nu is het me even beu, want ik heb m'n hele weekend er al aan besteed :). Volgende update zal later volgen.

Nog een vlugge vraag: Mocht ik dit porten naar openGL (wat normaal gezien bij de meesten toch standaard aanwezig is), zouden jullie dit mooi vinden als screensaver? Fullscreen, tragere animatie en zonder controls natuurlijk..

Bouncing rubik cube screensaver :)

Ik zou em nie gebruiken aangezien ek scherm gewoon op stand-by zet ipv met screensaver te werken, ma lijkt me wel leuk idee.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan