Tabela wyników, zapisywanie do pliku ini, szyfrowanie metodą Xor
przykład dla początkujących
//jezeli użyjesz tego przykładu w grze dodaj mnie do credits i poinformuj na PW, dzieki
wykorzystuje artykuł:
Szyfrowanie tekstu metodą Xor by Gnysek
artykuł z którym powinieneś się zapoznać:
Warunki i pętle w GM by Tymon
GML (create)
/*----------------------------------------------------------------------------*/
/*------------------------wczytywanie rekordów z pliku------------------------*/
/*----------------------------------------------------------------------------*/
if !file_exists("rekordy.ini")
{
//jeżeli plik "rekordy.ini" nie istnieje to go tworzymy
//i wszystkie pozycje uzupełniamy jako 0 szyfrując metodą Xor
ini_open("rekordy.ini")
for(var i=0;i<=9;i+=1)
//każdy powinien wiedziać jak działa pentla for :)
{
ini_write_string("score",string(i),doXor(0))//zapisywanie punktów na pozycje "i"
ini_write_string("nick",string(i),doXor("------"))//zapisywanie nicku na pozycje "i"
//inicjowanie tablic dwuwymiarowych
rekord[0,i]=0//punkty
rekord[1,i]=""//nick
}
}
else
//jeżeli plik istnieje
{
ini_open("rekordy.ini")
//zapisujemy wszystkie rekordy z pliku do tablicy 2-wymiarowej
for(var i=0;i<=9;i+=1)
{
rekord[0,i]=real(doXor((ini_read_string("score",string(i),""))))
rekord[1,i]=doXor(ini_read_string("nick",string(i),""))
}
}
ini_close()//należy pamiętać o zamknięciu pliku ini</span></span>
GML (keyboard pressed space)
/*----------------------------------------------------------------------------*/
/*------------------------pobieranie aktualnych wyników-----------------------*/
/*----------------------------------------------------------------------------*/
nick=get_string("Jak mam cię wpisać do rejestru dłuzników?","Somebody")
score=get_integer("Oblicz "+string(random(20))+"+"+string(random(20))+"=","")
/*----------------------------------------------------------------------------*/
/*------------------------zapisywanie wyników do pliku------------------------*/
/*----------------------------------------------------------------------------*/
for(var i1=0;i1<=9;i1+=1)
//odliczanie od najwyższego wyniku w dół
{
if score>rekord[0,i1]//jeżeli nasz wynik jest większy niż wynik na pozycji "i1"
{
ini_open("rekordy.ini")
for(var i2=9;i2>=i1+1;i2-=1)
{
//przesówamy wszystkie wyniki w dół(od tego którego pobiliśmy do końca)
rekord[0,i2]=rekord[0,i2-1]
rekord[1,i2]=rekord[1,i2-1]
//zapisujemy przesunięcie do pliku
ini_write_string("score",string(i2),doXor(rekord[0,i2]))
ini_write_string("nick",string(i2),doXor(rekord[1,i2]))
}
//gdy wszystko przesunięte to zapisujemy nasz aktualny wynik
rekord[0,i1]=score
rekord[1,i1]=nick
ini_write_string("score",string(i1),doXor(rekord[0,i1]))
ini_write_string("nick",string(i1),doXor(rekord[1,i1]))
ini_close()
exit//kończymy pentle oraz kończy cały event
}
}
GML (draw)
//rysowanie tła
draw_set_alpha(0.4)
draw_set_color(c_black)
draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,0)
//draw_set_font(font0)
draw_set_valign(fa_center)//wyśrodkowanie czcionki na osi Y
draw_set_alpha(1)
for(var i=0;i<=9;i+=1)
{
if i=0//1miejsce
draw_set_color(c_green)
else if i=1//2miejsce
draw_set_color(c_silver)
else if i=2//3miejsce
draw_set_color(c_orange)
else //inne miejsca
draw_set_color(c_dkgray)
//rysowanie kwadrata pod napisem
draw_rectangle(view_xview+10,view_yview+30+40*i-18,view_xview+view_wview,view_yview+30+40*i+18,0)
//rysowanie wyników
draw_set_color(c_white)
draw_set_halign(fa_left)//wyrównanie czcionki do lewej
draw_text(view_xview+20,view_yview+30+40*i,string(i+1))
draw_text(view_xview+50,view_yview+30+40*i,rekord[1,i])//nick
draw_set_halign(fa_right)//wyrównanie czcionki do prawej
draw_text(view_xview+view_wview-50,view_yview+30+40*i,rekord[0,i])//punkty
}
GML (skrypt doXor)
//skrypt by Gnysek
//https://gmclan.org/index.php?czytajart=58
var _klucz,i,_znaki,_len;
argument0 = string( argument0 );
_znaki = '';
_len = string_length( argument0 );
_klucz = 4321;//należy wpisać własny klucz
for ( i = 1; i <= _len; i += 1 )
{
_znaki += chr( ord( string_char_at( argument0, i ) ) ^ _klucz );
}
return _znaki;
download plik gm:s