Kostka Rubika rubic


MG Rubic's Cube 3D Napisal: Marcin Gardyjan

MG Rubic's Cube 3D jest to moja druga dobra gra (czyli robiona jako cos
wiekszego). Poprzednia byl- Warcaby 3D. Sa one na mojej stronie i w serwisie
polskich programistow oraz w kilku (bodajze w dwoch) czasopismach z roku 2000.
Jest to moja pierwsza gra w pelnym 3D. Wbrew pozora jest tu chyba dosyc wygodne
sterowanie (w kazdym razie ja moge wykonac nawet 2 ruchy na sekunde
w standardowej szybkosci).

MG Rubic's Cube 3D to program FREEWARE to znaczy, ze mozna go rozpowszechniac
dowolnie (a nawet polecam go rozpowszechniac), ale nie mozna w niego ingerowac
(tzn nie mozna zmieniac zawartosci plikow nalezacych do tej gry (lista plikow
pozniej)).

Pliki mid, ktore zamiescilem niestety nie sa moje- jedyna rzecz nie zrobiona
przeze mnie w tej grze. Sa one sciagniete z internetu, lub z czasopism i nie
podlegaja prawom autorskim, wiec rozumiem, ze moge je zamiescic.
Podziekowania dla autorow tych midi skladam, kimkolwiek oni sa.

Po Co Kostka Rubika na komputerze?

Ano z kilku powodow. W zwyklej kostce nie mozna wykonac zapisu stanu gry, aby
potem do niego wrocic niezaleznie od tego co bylo z kostka robione. Czesto
poczatkujacy "rubikowicze" uloza jakis fragment przy duzych staraniach
i pozniej zal go niszczyc, bo moze sie juz nie udac do niego powrocic:)
Poza tym jak udowodnic, ze sie umie ulozyc kostke, gdy czas jaki potrzebujemy
to np 20minut, a kazdy wie jak mozna kostke ulozyc metoda oszukancza (czyli
rozebranie kostki na kawaleczki i zlozenie ich).
Tu mamy tablice najlepszych wynikow zaszyfrowana (podobnie zapis stanu gry)
i wiadomo kto ulozyl kostke i w jakim czasie (o szyfrowaniu pozniej).
Poza tym sredni "rubikowicze", czyli np ja umieja ulozyc kostke, ale jej
jeszcze nie rozgryzli do konca. Ja np potrzebuje kartke papieru i dlugopis,
aby spamietac wszystko (po co? Zobaczysz jak bedziesz juz umial prawie ulozyc
kostke). Tutaj juz kartka papieru i dlugopis nie jest potrzebny (pomocniczy
Personal Computer mamy w grze) Dodatkowo mozna eksperymentowac, (czy
przeprowadzac proste dowody matematyczne:)) w trybie "wolne ukladanie" No
i kostke na komputerze moze miac kazdy i nic nie kosztuje, nie zginie, nie
wytrze sie, nie wyblaknie, nie potrzebuje papieru ani dlugopisow, czy
nie rozsypie sie gdy zbyt duzo razy skrocimy sobie droge jej ukladania:)
Poza tym jakbym mial troche pieniedzy to moglbym zalozyc serwer z najlepszymi
wynikami ulozen kostki, czy najciekawszymi "obrazkami" na kostce itp...

Apropo dowodow matematycznych. Istnieje teoria ze najkrotsza droga ulozenia
kostki niezaleznie od sytuacji na kostce nie jest wieksza niz 24...
Nie wiadomo, czy to prawda bo nikt tego jeszcze nie udowodnil (o tym pozniej)
Umiem udowodnic, ze jest ona parzysta, ale ze ma tylko 24 ruchy max...

Jestem tez pod wrazeniem ludzi ukladajacych kostke w mniej niz 2 minuty...
Moze kiedys tez taki bede:)... Skoro pare lat temu nie umialem wiecej niz
jeden pierscien ulozyc, a teraz (spojrz na tabele najlepszych wynikow).

Zalety:

-Kostka Rubika z wygodnym sterowaniem
-wzgledne nazwy scianek (lewa to twoja lewa)
-pomocniczy Personal Computerek
-Tabela najlepszych wynikow (szyfrowana)
-szyfrowany zapis stanu gry
-obsluga myszy
-tryb gry i wolnego ukladania a takze dema.
-mozliwosc kolorowania kostki
-plynna animacja w 65 klatkach na sekunde (tyle ile widzi ludzkie oko)
-realtimer*
-ladna grafika w 640*480 w 256ciu kolorach
-kostka w pelnym 3D
i nie wymaga akceleratora:)

*-ilosc klatek na sekunde dopasowana do szybkosci komputera


Dane techniczne o programie

Program jest napisany w calosci w C. Kiedys pisalem w Pascal + assembler, ale
od tego juz odszelem. Kod zrodlowy zajmuje ok 2900 linii (w tym Enginek 3D
zajmuje 450) Korzystalem jak zwykle tylko ze swojego kodu (enginek 3D jest moj)
oraz do komunikacji ze sprzetem Allegro (jest to cos jak Windowsowy DirectX,
tyle ze pod Dos i Linux), ale tez tylko z podstawowych funckji. Enginek 3D,
czy rysowanie trojkatow itd... jest napisane przeze mnie.
Raz 3 dni siedzialem nad wzorem na obrot punktu wzgledem osi w 3D(!) (mamy
dany punkt i 2 dowolne punkty na osi i ten punkt ma sie obracac wzgledem tej
osi). Lacznie moja gre pisalem przez ok 2.5 miesiaca szkolnego (gdyby nie
szkola to zrobilbym ja w miesiac)- nie liczac Enginku 3D, nad ktorym
eksperymentowalem przez dluzszy czas.

Ilosc klatek w grze wynosi 65, chyba ze masz wolniejszy sprzet i wtedy liczba
klatek moze spasc, ale szybkosc zawsze jest identyczna na kazdym komputerze.
Wyswietlam tylko te sciany, ktore sa widoczne tam gdzie to jest mozliwe.
Wedlug mnie dosyc dobrze zoptymalizowalem program jesli chodzi o wymagania.

Metoda szyfrowania nie jest bardzo skomplikowana (lepiej szyfruje moj program
Koder, ktory tez mozesz sciagnac z mojej www). Ale niezaleznie od uzytej
metody sredni cracker i tak zlamie to zabezpieczenie, a zwykly uzytkownik
po przeczytatni "poradnika hackera" sobie i tak z zastosowanym zabezpieczeniem
nie poradzi, wiec... (moj program Koder, juz cracker nie zlamie bo tam jest
szyfrowanie wedlug 40sto bitowego klucza)




KOSTKA RUBIKA

Kostka Rubika jest zabawka logiczna, integralna, przestrzenna i trojwymiarowa.
Zostala wynaleziona w 1975r. przez Rubika Erno. Ur. w 1944r. Wegierskiego
wynalazce, projektanta przestrzeni i tworce zabawek logicznych. poczatkowo
nie miala to byc zabawka logiczna a przyrzad do cwiczen wyobrazni przestrzennej.
No i...podbila swiat. Nie ma chyba osoby co by nie slyszala o Kostce Rubika,
a jak ktos jej jeszcze niegdy nie ukladal to...wstyd! To tak jakby nie umiec
grac w szachy... Zabieraj sie szybko do roboty ukladajac Kostke w mojej grze!
Kotke Rubika powinien lubic kazdy, kto ma wyobraznie przestrzenna.

Na Kostce Rubika istnieje 43 252 003 274 489 856 000 roznych jej ustawiem!!!
Nie sa jeszcze znane algorytmy gwarantujace ulozenie kostki z dowolnej pozycji
w mniej niz 50 ruchach, ale przewiduje sie, ze moze istniec algorytm 22-23
ruchowy. Na razie udowodniono, ze 16 ruchów to na pewno za malo...
Aby to sprawdzic, potrzeba superkomputera o niewyobrazalnie wielkiej mocy.
Za kazdym razem mamy mozliwe 12 ruchow, czyli aby sprawdzic, czy z danej
pozycji mozna ulozyc kostke w np 16 ruchach potrzeba 12^16 przeszukanych
drog, czyli... 184 884 258 895 036 416.




Zasady gry sa proste. Wymieszana kostke nalezy ulozyc w jak najkrotszym
czasie... Poczatkujacym moze to sprawiac klopot wydajacy sie nie do
przebicia..., ale po paru-set godzinach inteligentny czlowiek powinien
rozgryzdz prawa rzadzace Kostka, albo przynajmniej ich wiekszosc. To jest
pierwsze zadanie- w ogole ulozyc kostke, zanim sie bedzie ja ukladac na czas
i bez pomocy zadnych kartek i dlugopisow (czy Personal Computer w mojej grze).
Polecam najpier rozgryzc dziecinnie proste ukladanie jednej scianki, a lepiej
pierscienia (pierscien to 9 kosteczek- 3 pierscienie daja Kostke Rubika, nie
wazne czy poziome, pionowe, czy w glab). Mozna dalej przejsc w przestrzen
i ulozyc sobie np kosteczke 2*2*2 w Kostce Rubika. Pozniej dokladac kolejne
kosteczki, az sie ulozy cala Kostke. Najtrudniej bedzie ulozyc ostatni
pierscien. Taka idee mialem bedac w wieku 10lat i okazala sie... dobra-
chociaz chodzilo mi o co innego.




INSTRUKCJA

Kostka mozna sterowac na 3 sposoby!
Sam wybierz, ktory jest najwygodniejszy.
Mamy 6 strzalek (4 strzalki + klawisze:
< >, lub czasem L-przednia O-tylnia)
Zmiana trybu sterowania- spacja
Obracanie kostki- strzalki, lub myszka + prawy przycisk
W trybie (myszka zamrozona)- obracamy myszka
Dodatkowa os obrotu na myszce uzyskujemy lewym przyciskiem (czasem tez prawym).
Obracanie pierscieniami (sciankami)- klawisze L P G D C T 1 2 3- lewa, prawa,
gorna itd... z shiftem lub bez.
Albo latwiej!- np ctrl + prawo + gora- czyli prawa w gore.
W trybie z myszka zamrozona nie uzywamy klawisza ctrl (prawo + gora wystarczy!).
Dodatkowe ruchy (srodkami)- alt + jedna z 6ciu strzalek
Jesli sie pojawi X na dole po prawej to znaczy, ze kostke nalezy minimalnie
obrocic zanim wykonamy na niej ruch.
Czyz to nie proste?

Ja preferuje obracanie myszka w trybie z myszka zamrozona, a obracam samymi
strzalkami (bez klawisza ctrl).

Dodatkowe (ale tez przydatne) klawisze podczas ukladania kostki:
A/Z - zmiana szybkosci animacji
S/X - oddalenie, lub przyblizenie kostki
W - normalna odleglosc kostki
Enter- Enter w Personal Computer
F1 - wlaczenie/wylaczenie podpisow scianek
F2, lub myszka- pokazanie/schowanie pomocniczego Personal Computerka
F5-F8- zmiana utworu (w instrukcji tez)
F9 - wylaczenie muzyki (-||-)
Backspace, lub myszka- odwrocenie kierunku sterowania
F12 - robi zdiecje do pliku rubic.pcx
ESC - menu, lub pauza

Uwaga! Gdy jest X na dole po prawej to nie mozna wykonywac ruchow srodkami!

Ten "dziwny" X na dole po prawej sygnalizuje konflikt lokalizacji scian.
Normalnie moj program szuka sciany najbardziej wysunietej na lewo, najbardziej
wysunietej w gore itd... A czasem sie zdarza, ze jakas sciana jest jednoczesnie
najbardziej wysunieta np w prawo i w dol i wtedy nie wiadomo, czy jest ona
sciana prawa, czy dolna, a za to inna sciana nie ma w ogole oznaczenia.

Uwaga: Program musi byc uruchamiany z dysku z pozwoleniem na zapis, bo inaczej
wypisze blad.

Tabela najlepszych wynikow

Aby wejsc na tabele najlepszych wynikow "niestety" musisz ulozyc cala kostke.
Tablica ta jest segregowana wedlug czasu (im szybciej ulozysz kostke tym
wyzsza pozycje bedziesz mial). Jezeli czas jest taki sam to mniejsza ilosc
ruchow decyduje o wyzszej pozycji.
Aby zresetowac tablice najlepszych wynikow wystarczy skasowac jej plik, ale
po co to robic?

Personal Computer i story (czyli fabula)

Wyposazony w Kostke Rubika i Personal Computer masz ukladac Kostke Rubika.
Od Ciebie zaleza losy swiata:)
Komputerek, w ktory jestes wyposazony wyprodukowany zostal przez tajemnicza
firme Micro$oft (specjalizujaca sie w akcesoriach ulatwiajacych zycie ludziom,
oraz w systemach operacyjnych) zostal stworzony w szerokim zakresie. Tutaj
z zainstalowanym odpowiednim oprogramowaniem i sensorami wykrywajacymi ruch
potrafi nam pomoc przy ukladaniu kostki rubika. Dane techniczne: Niewiele
o tym wiadomo. Wiadomo jednak, ze posiada cieklokrystaliczny kolorowy
wyswietlacz, zasilany jest na baterie, lub z zasilacza, zawiera polaczenie z PC,
Rozdzielczosc monitora 380*240, Oprogramowanie: Windos CE, i RubicSoft firmy
ktorej szefem jest Marcin Gardyjan (a co?:)) pozwalajace na latwiejsze ukladanie
kostki. Komputerek wraz z oprogramowaniem pozwala na wyswietlenie na raz do
60-ciu ostatnich twoich ruchow, a pamieta do 225 ostatnich ruchow.

Dlaczego myszka nie mozna pierscieniami sterowac?

No coz. Jest problem no bo jak?
Mialem 2 pomysly. Obydwa sterowane tak samo: klikamy myszka na piersien,
ktory chcemy obrocic i przeciagamy myszka go w ktoras ze stron. No ale tak.
Gdyby to bylo 2D to zaden problem. Jak zlokalizowac pierscien, ktory chce
wskazac uzytkownik? Jak sprawdzic, w ktora strone ma pierscien ten sie
przemiescic?
Pierwszy pomysl byl taki, ze w Kostce Rubika jest umieszczone 6 punktow dzieki,
ktorym mozna zlokalizowac srodki pierscieni. Program by wyliczal wzgledem
ktorego najblizej kliknal uzytkownik i to jest nasz pierscien, ale okazuje sie,
ze bardzo latwo kostke rubika obrocic tak, ze ta metoda zle obliczy, ktory
pierscien zostal klikniety.
Drugi pomysl mialem taki, ze prowadzimy prosta od obserwatora przez punkt
na monitorze klikniety myszka w glab ekranu i obliczamy jakie sciany zostaly
przeciete ta prosta- teraz najblizsza z tych scianek (na kosteczkach malych
nie na kostce) to jest sciana kliknieta. Do tej pory jest ok. Teraz wiadomo
juz ktory szescianik zostal klikniety, ale kazdy szescianik, moze zostac
obrocony w jedna z 3-ech stron zawsze. Jak wyliczyc w ktora chcial uzytkownik?
Tez mialem i tutaj pomysl, aby przeprowadzic niewidoczna symulacje (trwajaca
milisekunde) wszystkich tych 3-ech mozliwosci i porownac rzut obracanej
kliknietej scianki z wektorem przesoniecia, lub polozeniem przesunietego
kursora myszki przez uzytkownika, ale okazuje sie, ze i ten sposob powoduje
od czasu do czasu zaklamania. Ostatecznie wymyslilem, ze beda tylko 4 kierunki
przesuwania i dzialalo by OK. Jednak utknolem na rzeczy w ktorej nie myslalem,
ze utkne- nie wiem jak sprawdzic czy punkt znajduje sie wewnatrz czworokata.
Wymyslilem sposob z iloscia przecinajacych sie prostych czworokata z prosta
utworzona ze sprawdzanego punktu i punktu po za czworokatem, ale cos nie dziala
za dobrze.
Ale i tak jest wygodnie. Myszka nie bylo by tak szybko jak sztrzalkami na
klawiaturze.

Parametry startowe:

-n oznacza, ze na wejsciu ma nie grac zadna muzyka

np rubic.exe -n




LISTA PLIKOW:

rubic.exe - glowny program
cwsdpmi.exe- sterownik pamieci- wymagany do dzialania pod Dosem
rubic.txt - plik, ktory wlasnie czytasz, czyli instrukcja
mg.pcx - moje zdjecie.
rubic.his - tabela najlepszych wynikow
start.bat - plik dla zagubionych (gdyby ktos nie wiedzial jaki exe wybrac:))
1.mid - plik z muzyka
2.mid - plik z muzyka
3.mid - plik z muzyka
4.mid - plik z muzyka

Nie Kasuj! zadnego z powyzszych plikow.

Dodatkowe pliki:
rubic.cfg - zapis konfiguracji programu
rubic.gsv - zapis ze stanem gry
rubic.fsv - zapis stanu kostki z trybu "wolne ukladanie"
rubic.pcx - zdjecie zrobione naciskajac klawisz F12 podczas gry

Uwaga! Nazw plikow nie wolno Ci zmienic inaczej program sie nie uruchomi.




WYMAGANIA:

Procesor: Uruchomi sie na kazdym 486DX, ale moze dzialac zbyt wolno. Zalecany
P200 (Pentium 200, lub kompatybilny), lub szybszy.
Ram: Na 2MB Ram powinno sie uruchomic, ale nie gwarantuje.
Zalecane 3MB Ram. Po prostu program wymaga _ponad_ 1MB _wolnej_
pamieci Ram.*
FDD/HDD: ok. 250KB wolnej pamieci na dysku na przechowywanie programu.
pare KB wolnego miejsca jesli chcesz cos zapisywac.
Video: SVGA 512KB zgodna z Vesa 1.0 (zalecana zgodnosc z Vesa 2.0)
OS: Dos 5.0 lub lepszy, Windows 95/98/ME i powinien dzialac tez
na Windows NT 4.0 (nowy SP wymagany) i Windows 2000. Do pracy
pod Dosem potrzebny jest plik cwsdpmi.exe wiec go nie wolno kasowac.
Inne:
Mysz: Zalecane jest posiadanie myszki przynajmniej dwuprzyciskowej.
Dzwiek: Zalecane jest posiadanie karty dzwiekowej kompatybilnej z jednym z
wymienionych standardow: ADLIB lub SB FM synth, OPL2, dual OPL2, OPL3,
SB MIDI interface, MPU-401, software wavetable, AWE32, a na pewno
kazda dzisiejsza karta dzwiekowa jest zgodna.


*- nie pytaj czemu az tyle. Po prostu sama inicjacia funkcji rozruchowych
srodowiska Posix i biblioteki Allegro oraz przechowywanie nieskompresowanego
programu w pamieci zzera prawie 1MB Ram. Dodatkowo potrzeba ponad 300KB
na obraz no i jeszcze zostaly inne rzeczy. Ale za to pozniej program sie juz
nie dogrywa.




MOJE OSIAGNIECIA

-w 1999 ruszyla moja www poswiecona programowaniu. Na niej zamieszczam wszystkie
moje najlepsze programy, kursy itd... (takze na stronie Polskich Programistow)
-W lutym 2000 roku zostalo zamieszczone w czasopismie CDA moja gra Warcaby 3D
i to nie w Bonusie a razem z grami innych firm (thx CDA)
-kilka miesiecy pozniej moj kolega zamiescil swoje i moje gry w czasopismie
Reset
-pod koniec roku 2000 dostalem sie na II etap Ogolnopolskiej Olimpiady
Informatycznej (z 1554 osob z calej Polski dostalo sie 273 w tym ja). Niestety
nie dostalem sie do III etapu (przyjeli 43 osoby z calej Polski). Moze za rok
mi sie uda.
-mam nadzieje, ze Kostka Rubika odniesie podobny sukces jak Warcaby 3D.
Mam nadzieje, ze tez zostanie zamieszczona w czasopismie (licze na CDA)
Jak zwykle czekam na listy (o warcabach bylo ich troche- pozdrowienia dla
piszacych)
-zamierzam wysylac moja Kostke Rubika na konkurs




POZDROWIENIA:
(kolejnosc alfabetyczna)

FRIENDS:
Alan Stasik i bracia
Alchemik
Baju
Epsylon
Jan
Jan Blinstrub
Jan Franckiewicz
Michal Byttner
Piotr Malek
Slawomir Zak
Tomek Lenarcik i Piotr Lenarcik
Tomasz Mikolajewski

TEAMS:
Clasp
Cool Team

and you!




INNE:

Jesli znajdziesz jakies bug-i (bledy) w programie, lub masz jakies problemy,
lub pytania to Pisz:

Marcin Gardyjan
e-mail : mgkiler@poczta.onet.pl
www : http://republika.pl/mgkiler
adres w reala: ul. Glogowa 23
Kielce 25346
urodzony : 1983 wrzesien 3
i koniecznie odwiedz moja strone. Znajdziesz tam wiele innych ciekawych
programikow i wiele rzeczy o programowaniu. Piszac ten program mam lat 17.
W przyszlosci chcialbym zostac prawdziwym programista.

Ostatnia modyfikacja: 2001 koniec maja

Wyszukiwarka

Podobne podstrony:
Kostka Rubika
karta charakterystyki broditop kostka
Kostka Polbruk instrukcja ułożenia
kurs układania kostki rubika offline
układanie kostki Rubika
2002 01 Gadająca kostka
Kostka jajeczna do rosolu
KChQ01Q02Q03 Dwufazowa kostka do wc wyd 2 08
Kostka w kostce
Kostka brukowa z betonu wibroprasowego
ciasto 1 kostka masla
magiczna kostka

więcej podobnych podstron