Skocz do zawartości

Propagandhi

Members
  • Postów

    329
  • Rejestracja

  • Ostatnia wizyta

O użytkowniku

  • Płeć
    Mężczyzna

Ostatnie wizyty

5 183 wyświetleń profilu

Osiągnięcia Propagandhi

  1. Jak już zainstalujesz Lua 5.1, to wszystkie potrzebne nagłówki i biblioteki znajdziesz w katalogach lib i include.
  2. Jeśli w label wyświetlana jest tylko liczba kliknięć, to można przyjąć jeszcze wariant bez pomocniczych zmiennych: label1->Text = (int::Parse(label1->Text)+1).ToString();
  3. Zakładając, że chodzi o C++/CLI, to możesz to zrobić dodając obsługę zdarzenia SelectedIndexChanged. Najprościej w trybie projektowania w panelu Properties poprzez dwuklik w pustym polu: Przeniesie Cię wtedy do procedury, oddelegowanej przez EventHandler do wykonywania instrukcji w razie, gdyby w combo zmieniła się jakaś opcja. W procedurze możesz wklepać np: textBox1->Text = "Zmieniłeś opcje na: " + comboBox1->Text; i będzie wyświetlało zmiany w textboxie.
  4. W ramach rozdziewiczania się z Pythonem skrobnąłem prosty skrypt pobierający statystyki postaci w grze i wyświetlający je jako obrazek. Może komuś się przyda takie rozwiązanie, szczególnie, że język cieszy coraz większym uznaniem i świetnie sprawdza się w zastosowaniach webowych. Do pracy w zasadzie wystarczy notatnik i hosting z pythonem. Z darmowych przestrzeni www pod tego rodzaju skrypty proponuje heliohost, lub nieco szybszy alwaysdata. Z ambitniejszych IDE na uwagę zasługuje Eclipse z dodatkiem PyDev. Tło: Sygnatura: Skrypt zapisujemy z rozszerzeniem .py i wrzucamy na serwer do katalogu cgi-bin. Plik powinien mieć uprawnienia 755. Z rzeczy do przerobienia na własną rękę jest zmienna nick na początku skryptu. Do katalogu z apliakcją musimy wrzucić jeszcze plik czcionki true-type (u mnie verdana bold) i plik tła (u mnie syg.png). Co ważniejsze zagadnienia komentowałem w kodzie. #!/usr/bin/python import Image,ImageDraw,ImageFont import cStringIO import urllib import re def renderuj(): #nick w grze nick = "nick_w_grze" #zmienna z kolorem w formacie RGB kolor_bezowy = (226, 199, 147) #inicjowanie nowej grafiki tlo = Image.open("syg.png") rysuj = ImageDraw.Draw(tlo) #wczytywanie czcionki z pliku (16 to rozmiar) czcionka = ImageFont.truetype("verdanab.ttf", 16) #wczytywanie strony z statystykami postaci strona = urllib.urlopen("http://combatarms.nexoneu.com/" + "Modules/Community/Profile/Profile.aspx?NickName="+nick).read() #wyszukuje parametry liczbowe parametry = re.findall("[<dd>|<dd class=\"end\">](\d{1,5}.\d{1,5}|\d{1,5},\d{1,5}|\d{1,5}|\d{2}.\d{2}.\d{4})</dd>", strona) #0 - na liscie od... #1 - RANKING #2 - K/D #3 - EXP #4 - GP #drukuje tekst z parametrami na obrazku - pierwsza zmienna to koordynaty if parametry: rysuj.text((415,15), nick, "white", czcionka, 0) rysuj.text((415,35), "K/D: " + parametry[2], kolor_bezowy, czcionka, 0) rysuj.text((415,55), "Ranking: " + parametry[1], kolor_bezowy, czcionka, 0) rysuj.text((415,75), "EXP: " + parametry[3], kolor_bezowy, czcionka, 0) rysuj.text((415,95), "GP: " + parametry[4], kolor_bezowy, czcionka, 0) else: rysuj.text((415,15), "B/D", "white", czcionka, 0) #znaczek z ranga ranga = re.search("caimage.nexoneu.com/Rank/rank_(\d{1,2}).gif", strona) if ranga: #wczytuje obrazek rangi z adresu ikona_temp = cStringIO.StringIO(urllib.urlopen("http://" + "caimage.nexoneu.com/Rank/rank_" + ranga.group(1) +".gif").read()) ikona = Image.open(ikona_temp) #wklejam obrazek ze znaczkiem rangi na tlo - druga zmienna to koordynaty tlo.paste(ikona,(555,15)) else: rysuj.text((50,50), "B/D", "white", czcionka, 0) #zapisuje dane na wyjsciu z naglowkiem informującym o tym, ze jest to grafika (image/png) f = cStringIO.StringIO() tlo.save(f, "PNG") print "Content-type: image/png\n" f.seek(0) print f.read() if __name__ == "__main__": renderuj() #!/usr/bin/python wskazuje na ścieżkę do katalogu z plikami wykonywalnymi pythona na *nixach. Na windowsie będzie to wyglądało inaczej i trzeba o tym pamiętać, jeśli chcecie odpalać na swoich maszynach. Biblioteki, które importuje, to Image,ImageDraw,ImageFont - do przetwarzania grafiki import cStringIO - do odczytu/zapisu stringów import urllib - do pobierania plików z sieci import re - do wyrażeń regularnych Z wyrażeń regularnych: [<dd>|<dd class=\"end\">](\d{1,5}.\d{1,5}|\d{1,5},\d{1,5}|\d{1,5}|\d{2}.\d{2}.\d{4})</dd> wyławia mi zwykłe daty, liczby, oraz liczby z przecinkami i kropkami w tagach <dd></dd> i <dd cośtam></dd>, czyli najważniejsze parametry postaci na stronie. Jeśli chcemy, żeby serwer traktował pliki png jak skrypty pythona, to do .htaccess dodajemy linijkę: AddType application/x-httpd-cgi .png Możemy teraz zmienić rozszerzenie z py na png i linkować na forum. Rekapitulując: Python, to świetny, dynamiczny język z bardzo dobrymi bibliotekami graficznymi. Nauka niestety, to dłubanie w dokumentacji, bo rozwiązania typu Intellisense we wszystkich IDE dla tego języka działają dość wybiórczo.
  5. Wszystko jest w dokumentacji: http://code.google.com/intl/pl/apis/recaptcha/docs/php.html W formularzu na stronie dodajesz: <!-- your HTML content --> <form method="post" action="verify.php"> <?php require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" /> </form> <!-- more of your HTML content --> Do sprawdzania używasz verify.php w którym na początku wrzucasz coś takiego: <?php require_once('recaptchalib.php'); $privatekey = "[color="red"]your_private_key[/color]"; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } else { // Your code here to handle a successful verification } ?> Gdzie your_private_key, to klucz, który dostajesz przy rejestracji recaptcha.Po ostatnim else przetwarzasz resztę danych z formularza - $_POST["nazwa_parametru_z_formularza"]. Jakbyś miał problemy z include, to ścieżkę do biblioteki recaptchalib.php możesz zmodyfikować za pomocą funkcji set_include_path. I to wsio.
  6. W tych znanych mi IDE zwykle wygląda to tak, że po kliknięciu PPM na kontrolce/obiekcie w menu kontekstowym możesz ustawić kolejność tych elementów za pomocą poleceń w stylu 'send to back', czy 'bring to front'.
  7. To jest do zrobienia w niemal każdym języku. W C# np pomocne będą klasy WebClient, FileInfo, czy dodatkowo MD5CryptoServiceProvider. Sprawdzanie z marszu wielkości plików na zdalnej maszynie nie jest chyba najszczęśliwszym pomysłem. Żeby to było w miarę wydajne, to pewnie musiałbyś to przez jakiś skrypt po stronie serwera zorganizować. Jeśli masz do niego dostęp, to pomyślałem o takim repozytorium, gdzie tworzysz zwykły plik tekstowy a w nim zapisujesz nazwy plików gry, ścieżki i ich wielkości, albo sumy kontrolne/hashe. Wtedy patcher ściągał by tylko ten plik, porównywał rozmiary, lub hashe z plikami na dysku i pobierał zmodyfikowane rzeczy. Przy okazji można sprawdzić, czy pliki są poprawnie ściągnięte.
  8. Boga w to nie mieszaj. W mojej grupie problem ten sam.
  9. Przedziałów jest 3, ale dla konkretnego argumentu sprawdzasz tylko 2, bo wykluczając je masz jasność, że Twoja wartość mieści się w tym 3-im. =JEŻELI(A1<=1000;"biedak";JEŻELI(A1>2000;"dobrze sytuowany";"srednia krajowa")) peace
  10. @Kulfix Może to jakaś awangarda, ale w moim zamku dachów warowni i wieży z dziewicami od spodu nie malowano. Poprzestałbym na polu bocznym. Przejrzyj też obliczenia, bo błędów jak mrówków.
  11. Ułóż sobie układ dwóch równań z dwoma niewiadomymi, gdzie te niewiadome, to liczba pięcio i dwuzłotówek. Podumaj, a jak nic nie wymyślisz, to tu masz podpowiedź: rozwiązanie bez obliczeń.
  12. Możesz zainstalować dystrybucje linuxa na windowsowej partycji. Nie wiem tylko, czy konkretnie dla FreeBSD jest to możliwe. Wiem z kolei, że Ubuntu pozwala na takie heretyckie posunięcie. Chodzi o dwa rozwiązania (nie licząc wirtualizacji systemu), które znam z autopsji, tj andlinux i Wubi. W pierwszym przypadku linux instaluje się jako usługa systemowa pod windows (vide projekt andlinux) i pozwala pracować na dwóch systemach jednocześnie. Minus takiego rozwiązania to duże zużycie pamięci operacyjnej. Do jakiejś znośnej pracy z niewielkimi aplikacjami andlinux potrzebuje około 200 MB RAMu. Drugie rozwiązanie jest nieco bardziej ambitne, choć też nie bez wad. Wubi to instalator ubuntu na windows. Instaluje linuxa, jak zwykły program, który możesz potem wywalić przez "dodaj/usuń programy" w panelu sterowania. Na system potrzebujesz minimum 8-10 GB miejsca na partycji. Ponieważ Ubuntu zainstalowane tą drogą nie działa w ramach natywnego systemu plików, to jest nieco wolniejsze niż klasyczna instalacja z właściwym formatowaniem. Okazjonalnym użyszkodnikom tego systemu powinno to jednak wystarczyć w prostych pracach. Co do reszty pytań, to sam musisz się przekonać, bo zwierzęta korporacyjne i ortodoksyjni opensource'owcy lubią mydlić oczy.
  13. Stwórz sobie jakąś zmienną do porównywania i w pętli sprawdzaj czy kolejne elementy z tablicy są większe od tej zmiennej. Jeśli są większe to do tej zmiennej przypisz wartość z tablicy. W ten sposób po wykonaniu pętli w zmiennej powinna zostać największa wartość. int max = tablica[0]; //pierwszy element z tablicy przypisuje do mojej zmiennej porównawczej for(int i=1;i<sizeof(tablica)/sizeof(tablica[0]);i++) { if(tablica[i]>max) max=tablica[i]; } //a tu wyświetl wartość zmiennej max
  14. To wygląda tak, że podstawiasz odpowiednie rozwinięcia tych funkcji: Sin(x + y) = Sin(x)*Cos(y) + Cos(x)*Sin(y) Cos(x + y) = Cos(x)*Cos(y) – Sin(x)*Sin(y) Sin(x - y) = Sin(x)*Cos(y) - Cos(x)*Sin(y) Cos(x - y) = Cos(x)*Cos(y) + Sin(x)*Sin(y) Ad. 1) Sin(270+a) korzystając z powyższego możesz rozpisać: Sin(270+a)=Sin(270)*Cos(a) + Cos(270)*Sin(a), czyli Sin(270)*Cos(a) + Cos(270)*Sin(a) = -Cos(a) Wartości sinusów dla 270 stopni: Cos(270) = 0 Sin(270) = -1 Podstawiasz i: -1*Cos(a) + 0*Sin(a) = -Cos(a) -Cos(a) = -Cos(a), c.n.u. W podpunkcie analogicznie Ad. 2) Tutaj za bardzo nie wiem, czy masz to rozpisać, jak wyżej, czy obliczyć kat alfa. Powiedzmy, że to drugie: Wiemy, że nasz kąt należy do 3ej ćwiartki w układzie współrzędnych i, że: Cos(a) = - 0,75 Można nieco uprościć szukanie tego kąta: a = 180 + x i z wzorów redukcyjnych wykorzystać coś takiego: Cos(180 + x) = -Cos(x) Porównując powyższe do Cos(a) = - 0,75 otrzymujemy, że Cos(x) = 0,75 z tablic x=41 stopni Czyli kąt alfa=180+41=221
  15. Spróbuj programem VirtualDub. To malutkie, darmowe, albo bardzo potężne narzędzie. Z paska narzędzi na dole czarnymi strzałkami zaznaczasz sobie klatki, które chcesz wyeksportować. W menu Video->Filters dodajesz filtr "resize" i dopasowujesz rozmiar obrazu. Później z menu File->Export wybierasz "Animated GIF". To wszystko. Efekt kilku minut pracy:
×
×
  • Dodaj nową pozycję...