Mój pierwszy nieco większy program edukacyjny.

0

Siema, ostatnio napisałem prostą grę edukacyjną(na razie jest w wersji beta).
Program losuje dwie liczby i trzeba je jak najszybciej do siebie dodać lub odjąć(wybiera to się klikając "Select subtraction"). Gdy się dobrze odpowie, program wyświetli stosowny komunikat i czas w jakim się odpowiedziało. Jeśli się źle odpowie, program wyświetli prawidłową odpowiedź. Rozmiar liczb wybiera się w "Select amount of digits". Przycisk "-" nad dużym przyciskiem służy do decydowania czy wprowadzona liczba jest dodatnia czy ujemna. Zapraszam do oceny :)
http://przeklej.org/file/QcSOrs/What.Number.beta.exe

0

U mnie się nie uruchamia. Wychodzi okienko żeby zainstalować i spróbować ponownie.
Windows 8.1

2

A może tak kod źródłowy? Czy mamy tylko oceniać losowego execa od niezaufanej osoby?

0

@dzek69 Nie jestem pewien czy będę udostępniał kod, bo nie wiem jaką dokładnie licencję dać. Ale jeśli mi nie ufasz, to zawsze możesz użyć Virustotala: https://virustotal.com/pl/file/370c0a991151b6402592bd6f2d0f7e0d98136d27aaa6ffc1f2401e2be853830f/analysis/1469122760/

1

Źródło źródłem (nie każdy ma ochotę na open source), ale jakiś screenshot / animowany gif / czy filmik prezentacyjny na youtube by się przydał, bo inaczej to zupełny kot w worku. Nawet jak przyjąć, że nie ma tam złośliwego kodu, to dlaczego ktoś miałby to ściągać?

4

Niektórzy szacują (ja się zgadzam), że skuteczność antywirusów to ok 30%, także nie przekonuje mnie to ;)

Taki drobny projekt to możesz udostępnić na jak najwolniejszej licencji - i tak Ci tego nikt nie ukradnie, o wiele bardziej zaawansowane rzeczy są już w sieci.

2
amb00 napisał(a):

@dzek69 Nie jestem pewien czy będę udostępniał kod, bo nie wiem jaką dokładnie licencję dać.

Pleaseee.<facepalm>
Z tego co napisałeś, to wynika, że programik losuje/dodaje/odejmuje/wyświetla wyniki. Niestety, kalkulator w windows przebija go tysiąc razy w złożoności, więc nie sądzę, że jest to rzecz, z opracowaniem której ludzie by sobie nie poradzili.

Wstaw kod, ponieważ programistów to będzie bardziej interesować i może podpowiedzą Ci jakieś rzeczy albo dadzą konstruktywne uwagi. Udało Ci się już zainteresować kilka osób, a w tym dziale to naprawdę coś. Powodzenia.

1

Program zawsze można opublikować bez licencji; Przy okazji - Regulamin korzystania z Serwisu określa licencję:

§3. Materiały umieszczone w serwisie napisał(a)
  1. Materiały umieszczone w serwisie i dostępne do ściągnięcia (pliki binarne), w tym obrazy i pliki multimedialne rozprowadzane są na zasadzie licencji pozwalającej na darmowe rozpowszechnianie (np. GNU/Freeware/Shareware).

Z automatu "jakaś" licencja zostanie nadana :]

0

@furious programming
@GregoryI
@dzek69
@LukeJL

2
else if(ComboBox1->Text==1){arg_modulo=pow(9,1);arg2=1;}
	else if(ComboBox1->Text==2){arg_modulo=pow(9,2);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==3){arg_modulo=pow(9,3);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==4){arg_modulo=pow(9,4);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==5){arg_modulo=pow(9,5);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==6){arg_modulo=pow(9,6);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==7){arg_modulo=pow(9,7);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==8){arg_modulo=pow(9,8);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==9){arg_modulo=pow(9,9);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==10){arg_modulo=pow(9,10);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==11){arg_modulo=pow(9,11);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==12){arg_modulo=pow(9,12);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==13){arg_modulo=pow(9,13);arg2=arg_modulo/10;}
	else if(ComboBox1->Text==14){arg_modulo=pow(9,14);arg2=arg_modulo/10;}

Co by było, gdybyś chciał obsłużyć w programie 500 liczb?

1

I dlatego warto pokazywać kod innym :)

BTW w jakim IDE to pisałeś? Wygląda jak kod z borlandowskiego C++ Buildera (to jeszcze istnieje?)

no i parę uwag do kodu:

  • komentarze po polsku zamiast po angielsku (pół biedy, jeśli dopiero zaczynasz),
  • ale: komentarze z polskimi ogonkami, co już nie powinno mieć miejsca (efekt jest taki, że u mnie widać krzaczki - przypuszczalnie dlatego, że kodowanie jest inne. Nie wiem jak teraz, ale kiedyś w Windowsach domyślnie było CP1250 zamiast uniwersalnego UTF8).
  • niektóre komentarze wynikają z tego, że zmienne zostały źle nazwane albo zadeklarowane w nieprzemyślany sposób. Gdybyś nazwał zmienną bardziej opisowo niż x to by żaden komentarz nie byłby potrzebny. Tak samo gdybyś użył bardziej sensownego dla operation niż bool to nie miałbyś potrzeby dawać komentarza: dodawanie/odejmowanie (bool jest o tyle bez sensu, że jak będziesz chciał dodać mnożenie i dzielenie, to już nie dodasz, bo przewidziałeś tylko 2 operacje - true/false, lepszy byłby pewnie jakiś enum, czy co tam się w C++ daje). Z kolei przy count wiadomo, że jak nazwiesz zmienną count to jest to liczba znaków. Więc komentarz niepotrzebny (ew. możesz nazwać zmienną np. charCount żeby zaznaczyć, że to liczba znaków a nie słoni).

No i ogólnie mam wrażenie, że bardzo słabo znasz elementy języka i środowiska, w którym piszesz (tak jakbyś same ify znał i wszystko rozwiązywał za pomocą ifów, nawet piętnastu naraz), co oznacza, że jeśli chcesz pójść dalej to warto się zatrzymać i poznać mocniej fundamenty (nie pytaj mnie o szczegóły tych fundamentów, bo w C++ pisałem dawno temu już, więc nie poradzę co do książek/źródeł wiedzy/whatever).

0
LukeJL napisał(a):

I dlatego warto pokazywać kod innym :)
BTW w jakim IDE to pisałeś? Wygląda jak kod z borlandowskiego C++ Buildera (to jeszcze istnieje?)

C++ Builder XE z 2010 roku. I tak, istniej i jest ciągle rozwijane.

LukeJL napisał(a):

Tak samo gdybyś użył bardziej sensownego dla operation niż bool to nie miałbyś potrzeby dawać komentarza: dodawanie/odejmowanie (bool jest o tyle bez sensu, że jak będziesz chciał dodać mnożenie i dzielenie, to już nie dodasz, bo przewidziałeś tylko 2 operacje - true/false, lepszy byłby pewnie jakiś enum, czy co tam się w C++ daje).

Nie przewiduję dodawania mnożenia i dzielenia.

LukeJL napisał(a):

No i ogólnie mam wrażenie, że bardzo słabo znasz elementy języka i środowiska, w którym piszesz (tak jakbyś same ify znał), co oznacza, że jeśli chcesz pójść dalej to warto się zatrzymać i poznać mocniej fundamenty (nie pytaj mnie o szczegóły tych fundamentów, bo w C++ pisałem dawno temu już, więc nie poradzę co do książek/źródeł wiedzy/whatever).

Słabo znam środowisko ale dobrze znam fundamenty języka. I tak, wiem switch by był lepszy do tego zamiast if ale switch mi z tym nie chciał z tym działać. I wiem z czego się uczyć, mam PDFy dwóch książek do C++.

2
amb00 napisał(a):
LukeJL napisał(a):

No i ogólnie mam wrażenie, że bardzo słabo znasz elementy języka i środowiska, w którym piszesz (tak jakbyś same ify znał), ...

Słabo znam środowisko ale dobrze znam fundamenty języka.

Muszę Cię zmartwić, ale nie, nie znasz fundamentów. Weź tę książkę co masz i przeczytaj chociaż raz (całą dokładnie).
Wtedy (za jakieś 1-2 lata) sam przyznasz, że mieliśmy racje.

1

@amb00 eh, zamiast tych elfów i switchów mogłeś po prostu zrobić funkcję. :)

1

Nie przewiduję dodawania mnożenia i dzielenia.

to znaczy, że myślisz krótkowzrocznie, nie wiem czy jest się czym chwalić...

0

Niektórzy szacują (ja się zgadzam), że skuteczność antywirusów to ok 30%, także nie przekonuje mnie to

Najlepsze z najlepszych znajdują do 60% zagrożeń, a słabsze (komercyjne!) wykrywają zaledwie 15-25%. Czytałem art. chyba w benchmarku.

Poza tym były artykuły, że niektóre antywirusy mają charakter szpiegowski, tzn. wysyłają do siebie różne informacje z naszego dysku (np. listę plików, itp.). Nie tylko windows to spy software :)

1

Pobieżne rzucenie okiem:

  • Nazywanie zmiennych
  • Button1..N nie jako tablica
  • Korzystanie z starych headerow .h?
  • Implementacja funkcji ButtonXClick z wykorzystaniem metody pana Zelenta :P czyli 'uber-copy-paste method' (to wszystko powinno być wyciągnięte do zewnętrznych funkcji)
  • Cala masa dziwnych zmiennych globalnych
  • Zła intendancja kodu
  • Pokrętna logika w TForm1::EnterClick + brak podziału na funkcje
  • Gdy patrze na TForm1::ComboBox1Change to aż oczy bolą
if(ComboBox1->Text==1)arg_modulo=10;
else if(ComboBox1->Text==1){arg_modulo=pow(9,1);arg2=1;} 

Jesteś pewny, że to działa tak jak chcesz?

Więc sam widzisz problem jest praktycznie w każdym kawałku kodu.

Moim zdaniem po prostu wyklikałeś program w borlandzie + dodałeś trochę kodu od siebie, ale sam do końca nie wiesz jak to tam wszystko działa.

Ten post nie ma na celu Cię demotywować, masz 19 lat, pracuj ciężko i będą z Ciebie ludzie.

2

Nie chcę hejtować za bardzo, ale jak można mówić, że zna się fundamenty jakiegoś języka, ale "switch mi nie chciał działać, więc zrobiłem na ifach". Lepszego przykładu, że fundamentów nie znasz nie dało się chyba podać :)

0

@dzek69 @LukeJL @amd Wiem, że trochę to brzydko wygląda ale:
-Po pierwsze, to mój pierwszy większy okienkowy program jaki kiedykolwiek napisałem. Choć ogarniam klasy, dziedziczenie, polimorfizm, itp. to miałem problemy z ogarnięciem interakcji pomiędzy rożnymi elementami programu.
-Po drugie, wiem, że ten fragment kodu z comboboxem słabo wygląda ale robiłem to na szybko aby w ogóle działało i potem miałem zamiar użyć lepszej metody, bo docelowo miałem zamiar publikować tylko binarkę.

BTW. A jak byście ocenili nie sam kod ale gotowy program z punktu widzenia zwykłego użytkownika?

0

Nieprzydatny. Tyle wiem z kodu i opisu.

Sam program nie ma ikony (tj. domyślna ikona), a przy uruchamianiu wywala 4x komunikat, po czym nic się nie dzieje.

---------------------------
What Number beta.exe - Błąd systemu
---------------------------
Nie można uruchomić programu, ponieważ na komputerze nie znaleziono rtl150.bpl. Spróbuj ponownie zainstalować program, aby naprawić ten problem. 
---------------------------
OK   
---------------------------
0

Tutaj jest działająca wersja: hxxp://przeklej.org/file/AMFwep/What.Number.beta.exe ( PLIK POTENCJALNIE NIEBEZPIECZNY - @dzek69 )
Wtedy zapomniałem o dołączeniu potrzebnych bibliotek.

0

Wklej to na jakiś NORMALNY hosting, bo przeklej.org albo dokleja trojany albo pokazuje jakieś fałszywe przyciski z downloadem. Wrzuć jako załącznik do posta np.

0

Już.

1

Ok. Więc

  1. Program jest brzydki, ekstremalnie. Ot kilka kontrolek porozrzucanych byle jak, teksty nawet marginesów od brzegu okna nie mają. Nie zachęca to do korzystania z niego.
  2. Nie można korzystać z klawiatury do wprowadzania odpowiedzi. Po co w ogóle te kontrolki wyjęte z kalkulatora?
  3. Przycisk "Random" nie sugeruje, że tym rozpoczyna się "rozgrywkę".
  4. Niejasny do pewnego momentu "+" przy wpisywaniu odpowiedzi. Z początku myślałem, że będzie on sugerował operację, której mam dokonać, a okazuje się, że nie. Sam zaznaczony checkbox to za mało. Dodaj w drugim wierszu znak operacji, a przy wyniku daj =, przy dodatnim wyniku nie wyświetlaj tego plusa, dopiero minus przy ujemnym.
  5. Podpis z aż trzema wariacjami Twojego nicku na połowę szerokości okna programu. Demaskuje to informację, że autor jest totalnym amatorem, który pierwsze co wrzuca do programu to swój podpis, który musi być widoczny cały czas, a jeżeli nie cały czas to na pewno na powitanie, zakończenie i czasem po środku wykonywania programu. Ta namiętność występuje niezależnie od języka, ale kojarzy się z klasykiem: Mamo, mamo, umiem PHP!

No i najważniejsze: Nawet piękne i wygodne sumowanie/odejmowanie liczb, żeby dowiedzieć się, że zrobiłem to w 6 sekund jest zwyczajnie nudna. Program nie niesie za sobą żadnej wartości. W przypadku takich programów lepiej pytaj o ocenę kodu, bo ten jeszcze może mieć jakąś wartość.

0

@dzek69
2. Słyszałem sugestię, że ludzie z reguły wolą używać myszki.
3. Co innego sugerujesz?
5. No wiem, że to średnio wygląda ale miałem zamiar to zmienić w finalnej wersji.
Co do przydatności, to program edukacyjny, który ma uczyć szybkiego liczenia w pamięci, więc nie zainteresuje on wielu osób. Chciałem zrobić coś oryginalnego. Dzięki za opinie :)

0
  1. Do wpisywania danych/cyfr? To dlaczego komputery w ogóle mają fizyczną klawiaturę, jak można zrobić ekranową? Wolą używać, tam, gdzie ma to sens, czyli np. do szybkiego przemieszczania się pomiędzy elementami interfejsu - np. ekran z 50 kontrolkami, gdzie z klawiatury musiałbyć 50 razy pacnąć "TAB", żeby dostać się do ostatniej. Ale np. do przełączania okien w systemie operacyjnym to nawet nietechniczni ludzie używają czasem ALT+TAB.

  2. "Start"?

  3. Czekamy na nią :)

Programy edukacyjne mogą być ładne i dające więcej przyjemności niż "zsumuj dwie wyświetlone pod sobą liczby" :) Losowe przykłady:
http://www.topmarks.co.uk/maths-games/5-7-years/addition-and-subtraction
http://www.topmarks.co.uk/maths-games/7-11-years/addition-and-subtraction

Twój program jest zupełnie nieoryginalny, bo takich rzeczy jest masa - są jednak zbyt proste i nudne, żeby siedziały wysoko w google, więc musiałbym za nimi grzebać, żeby znaleźć, no ale takie rzeczy też widziałem, tyle, że ładniejsze (i nie chodzi mi o wrzucanie żabek i latających ptaszków, tylko o oprawę będącą czymś więcej niż zwykłym tekstem na zwykłej formie).

0

Porzucam program, bo robienie go po prostu nie ma sensu, zajmuję się obecnie innymi projektami. Jakieś 2 miesiące temu powtórzyłem sobie jeszcze raz wszystko od podstaw w pewnej książce do C++, przejrzałem też na szybko książkę "Język ANSII C", drugą edycję. I okazało się, że nie prawie miałem braków w wiedzy, jeśli chodzi o składnię, instrukcje, operatory, itp. przynajmniej jeśli chodzi o programowanie strukturalne. Po prostu nie przemyślałem tego jak dokładnie ma działać ten program.

dzek69 napisał(a):

Nie chcę hejtować za bardzo, ale jak można mówić, że zna się fundamenty jakiegoś języka, ale "switch mi nie chciał działać, więc zrobiłem na ifach". Lepszego przykładu, że fundamentów nie znasz nie dało się chyba podać :)

Zapomniałem wtedy, że switch nie działa ze stringiem. Chciałem wspomnieć o tym aby uratować swój honor :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1