Napisałem taki sobie mały programik do tworzenia i symulacji schematów blokowych. Napisany w Javie. To mój pierwszy poważniejszy projekt w Javie, drugi w ogóle (pierwszy to był klon gry BlockOut w 3d). Jest to nieco mój poligon doświadczalny w dziedzinie Javy.
Stwierdziłem że przed wydaniem kolejnej stabilnej wersji przyda się jeszcze nieco testów.
URL:
http://javablock.sf.net/
https://sourceforge.net/projects/javablock/
Instalacja online:
http://javablock.sf.net/install.jnlp
Program jest po polsku i angielsku (wykrywa i wybiera Java)
Moja angielski pisana na szybko słaba, wy nie bić :)
Cechy programu:
Tworzenie schematów blokowych
Symulacja schematów przy użyciu JavaScript, lub Python (opcjonalnie)
Śledzenie wartości zmiennych
Generowanie skryptów (niezbyt optymalnych) Python i JavaScript ze schematu (trzeba jeszcze ręcznie dopisać klasę obsługującą wejście/wyjście)
"Ułatwiacze" i uniwersalizacja składni JavaScript i Python (np. i++ w Pythonie zamieniane na i+=1)
Rysowanie niskopoziomowe (canvas2d) i prosta implementacja poleceń LOGO
Definiowanie struktur (w przyszłości klas i ich metod)
Działa jako aplet
Tryb pascala (np. można używać := do przypisania, = do porównywania, <> zamiast !=)
Lekki i łatwy w obsłudze
Bezpośrednie wysyłanie i pobieranie schematów do i z pastebin.com
"Niekodowe" edytory bloków - niewymagające znajomości składni (np. wejście/wyjście, blok startowy, bloki obsługujące dodatki)
Schemat jako funkcja - możliwość potraktowania schematu jak funkcji (również rekurencja)
Aplikacja "sędziego" do sprawdzania poprawności wielu schematów jednocześnie (w przygotowaniach)
Ładowanie skryptów dla poszczególnych silników
Ładowanie klas Java do użytku w schematach
Wymagania:
Rozdzielczość 1024x600 (obcina lewy panel), zalecana wyższa niż 1024x800
256 MB RAM, zalecane 1GB
20 MB na HDD
System dowolny z Javą SE 1.6
Połączenie z internetem (sprawdzanie wersji, wysyłanie/ściąganie schematów z internetu, instalacja modułów dodatkowych)
Procesor trudno określić - im szybszy tym szybciej będzie symulował:)
Przykładowe schematy:
Ciąg Fibonacciego metodą tablicy:
http://www.fotosik.pl/pokaz_obrazek/8801e17abcc8edd2.html]
Ciąg Fibonacciego metodą 2 zmiennych (i zmiennej tymczasowej)
http://www.fotosik.pl/pokaz_obrazek/cd313f03857fd197.html
powyższe dwa:
Aplet: http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=325akZen
Pastebin ID: 325akZen
Losowanie unikalnych liczb z użyciem "buforu" (tablicy przechowującej informację, czy dana liczba została wylosowana)
http://www.fotosik.pl/pokaz_obrazek/1ecab0fcd5cbb709.html
Losowanie unikalnych liczb metodą przeszukiwania tablicy:
http://www.fotosik.pl/pokaz_obrazek/a4983aa779ae1f2c.html
powyższe dwa:
Aplet: http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=s2jZkVft
Pastebin ID: s2jZkVft
Krzywa Beziera
http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=2bYQbxhC
Pastebin ID: 2bYQbxhC
I taki mało przydatny bonus: rysowanie prostego atraktora
Applet:
http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=x3ZY0aXS
Pastebin ID: ZfMgChVa
Efekt: http://i52.tinypic.com/27zix69.png
Mając program na HDD, można te schematy wczytać wybierając z menu: Plik> Importuj z pastebin, potem wkleić w okienko Pastebin ID i chwilę poczekać.
Czekam na zgłoszenia błędów i propozycje.
Myślałem nad dodaniem JRuby, ale musiałbym mocno zmodyfikować dotychczasowy kod, no i się Ruby nauczyć:p Klasy i funkcje same się nie wygenerują.