Pagina 13 din 18

Scris: 09 Feb 2013, 00:05
de Stefan_Ilioaica
Stau si ma intreb oare se pot pune trei conditii intr-un if?
De exemplu: if(x=1, y=2 and y=3)
Se poate ceva de genul asta? Eu am incercat dar nu a mers, in schimb cu doua conditii merge.

Scris: 09 Feb 2013, 00:42
de Campus
in toate limbajele in care am lucrat eu mergea ceva de genul

if a=1 AND b=2 AND c=3 then ....

Scris: 09 Feb 2013, 04:10
de Manu
Pai cum sa nu se poata Stefan? Se pot si o mie.
Depinde cum vrei, toate conditiile sa fie indeplinite, doar cateva, doar una sa fie obligatorie etc.

In BGT, cum spunea si campus mai pe limbaj basic, ar fi:

Cod: Selectaţi tot

if(x==1&&y==2&&z==10)
{
// Cod de executat daca se indeplineste conditia..
}
In exemplu de mai sus toate trei conditiile trebuie sa fie indeplinite, adica doar daca x este 1, y este 2 si z este 10 se intampla codul dintre acolade.

Scris: 21 Feb 2013, 19:25
de Bordanc_Nicu
Da, se pot scrie mai multe conditii, dar de exemplu in php, conditia:
if($x=="1"&&$y=="2"&&$z=="3")
e mai rapida de cat conditia:
if($x=="1" AND $y=="2" AND $z=="3")
Si conditia:
if($x=="1"||$y=="2"||$z=="3")
e mai rapida de cat conditia:
if($x=="1" OR $y=="2" OR $z=="3")

Scris: 22 Feb 2013, 04:47
de Manu
E cam ciudat sa fie mai rapida doar prin folosirea unui sinonim... As fi curios care ar fi motivul unei viteze crescute prin folosirea && in loc de AND sau || in loc de OR.
Eventual pentru simplul fapt ca AND e din 3 caractere si la interpretare ia mai mult pana este citit, ceva in genul citirii de catre un om, in mod normal se citesc mai repede cu ochii sau cu degetele doua caractere decat 3. Ori trebuie sa faca intern inlocuirea lui AND cu && si a lui OR cu ||, fapt care intr-adevar ar lua ceva in plus.
Suna putin cam exagerat ceea ce am scris mai sus, poate fi luata ca gluma. As fi totusi curios pe ce baza spui ca e mai rapida o varianta ca alta. Scrie undeva in manualul PHP?

Si in BGT este permisa scrierea operatorilor ca AND si OR, dar nu am folosit niciodata, tot din motive de viteza, scriu mai repede doua caractere decat 3. Unde pui ca parca arata mai a programare && si || decat AND si OR care arata mai mult a scripting. :)

Scris: 23 Feb 2013, 23:45
de IonPop
"Unde pui ca parca arata mai a programare && si || decat AND si OR care arata mai mult a scripting."

Care este diferenta intre "programare" si "scripting"?

De obicei limbajele care ofera si || si or, si && si and, fac o distinctie intre ele, si anume de prioritate.

Este ca si prioritatea intre operatorii * si / care este mai mare decat prioritatea operatorilor + si -.
Si de obicei || si && au o prioritate mai mare decat and si or, iar acest lucru poate fi util cand dorim sa scriem fara sa folosim prea multe paranteze.

Doar ca este recomandabil sa punem mai bine paranteze, fiindca va fi mai clara prioritatea, decat sa folosim si && si and, si || si or.

In legatura cu cresterea vitezei, este absolut nerelevanta diferenta intre cele doua tipuri de operatori.

O citire a unui fisier de pe hard disk sau o cautare in baza de date oricum va dura de sute sau mii de ori mai mult decat o conditie cu or/||/&&/and.

Scris: 24 Feb 2013, 03:44
de Manu
Mai bine sa nu ne apucam de dezbateri despre diferenta intre scripting si programare ca... :)
Nici nu stiu daca se poate ajunge la o concluzie cu privire la aceasta diferenta...
Probabil ca am putea considera programare un cod care se compileaza si scripting un cod care este interpretat. Cel putin asa ar spune unii de pe la UBB.
Totusi, atat Perl, cat si Python sunt considerate programming languages general purpose, desi s-ar putea spune ca sunt scripting-uri daca ne gandim ca sunt interpretate.

Nu stiu cum e cu diferenta intre && si AND, in BGT nu stiam sa existe, ma gandeam ca sunt sinonime. La fel si in C sau C++.
Dar daca ar fi vorba doar de precedenta, prefer sa folosesc parantezele, e mai asemanator cu ceea ce faceam la scoala la aritmetica in clasele mici.

Scris: 24 Feb 2013, 19:32
de IonPop
Si programele in Perl sau Python sunt la fel de compilate ca cele in C.

Unele programe compileaza programul in cod masina sub forma unui executabil, ca C, altele il compileaza ca bytecode si il salveaza in fisiere precompilate pe disk cum e cazul Java, altele il compileaza si il pastreaza in memorie fara sa il salveze cum e cazul Perl/python/ruby, Python poate si sa salveze o forma precompilata etc.

Operatiunea de salvare a codului compilat are loc intotdeauna dupa faza de compilare, asa ca nu are nici o legatura cu sintaxa programului. Deci nu exista vre-o legatura intre faptul ca un limbaj salveaza codul compilat intr-un fisier sau nu si faptul ca foloseste ||, or, && sau and.

Este intr-adevar mai bine sa folosesti paranteze, fiindca codul este mai clar.

Scris: 24 Feb 2013, 20:54
de Vlad_Ciotescu
buna
as vrea sa va intreb ceva pe dumneavoastra domnu Manu. Bgt suporta fisierele in format wma pentru ca eu am facut un joculet si mi-a dat eroare ca nu-l poate incarca.

Scris: 24 Feb 2013, 21:38
de Manu
BGT nu suporta decat .WAV si .OGG.
Gasesti tot felul de programe care pot converti fisiere .MP3 sau .WMA in .OGG. Eu folosesc Easy CD Extractor.

BGT nu are suport pentru MP3 pentru ca se pare ca MP3 este un format proprietar care nu poate fi folosit liber. Cel putin asa spune Philip Bennefall, ca ar trebui sa achite o taxa celor care detin formatul MP3.

Lui IonPop:
Atunci care ar putea fi diferenta intre Programming si Scripting?
Nu este deloc, nici macar luand ca si criteriu dificultatea scrierii codului?
Sau ar putea fi diferenta urmatoare:
Programare este ceea ce poate rezulta intr-un stand alone, iar scripting ceea ce ruleaza intr-un program, cum este JAWS Scripting.

Scris: 24 Feb 2013, 22:19
de IonPop
Evident ca nu exista nici o diferenta intre programare si "scripting".

In mod traditional scripturi le spune la limbajele in care nu se face o compilare a codului, ci doar o interpretare instructiune cu instructiune in ordinea in care ele apar in cod.
Astfel de programe sunt cele create in limbaje ca Bash sau limbajul folosit in fisierele .bat.

In acele limbaje se ruleaza codul si totul functioneaza fara probleme atat timp cat instructiunile au un format corect, chiar daca ultima instructiune din fisier are o eroare de sintaxa, si doar acea ultima instructiune va returna o eroare, restul codului executandu-se fara probleme.

In limbajele compilate, ca Perl, Ruby, Python, daca apare o eroare de sintaxa chiar pe ultima linie a fisierului, programul nu poate fi compilat in faza de compilare, asa ca returneaza o eroare inainte de a se putea executa ceva, exact ca in cazul unui program in C.

Doar ca si in cazul limbajelor de scripting de genul Bash/bat este vorba tot de programare, fiindca programatorul trebuie sa faca exact acelasi lucru, adica sa scrie un cod folosind o anumita sintaxa, sa foloseasca aceleasi conditii de tip if/else/while/for, sa foloseasca variabile, operatori, etc.

Nu cred ca dificultatea limbajului poate fi o indicatie pentru tipul de limbaj, fiindca si in Bash pot exista programe de dimensiuni destul de mari si destul de complexe, mai complexe decat intr-un limbaj in care programele sunt compilate in cod masina.
Intr-adevar, de obicei nu se intalnesc prea multe programe mari si complexe in limbaje ca Bash/bat, fiindca acele limbaje sunt destul de limitate, asa ca este destul de greu sa creezi programe complexe cu ele.

Dupa cum sti, scripturile JAWS sunt denumite scripturi, dar ai vazut ca dupa ce apesi Control+S, iti spune "Compile complete" :-)
Asa ca si ele sunt tot programe compilate, si inca si salvate in fisiere pe hard disk.

Cand auzi despre astfel de diferente intre limbaje cum ar fi ca unul este limbaj de programare iar altul de scripting, nu trebuie sa iti faci probleme, fiindca este probabil doar o incercare de demonstrare de genul "limbajul meu preferat este mai bun decat limbajul tau preferat" :-)
dar practic din punctul de vedere al programatorului care trebuie sa scrie codul, nu exista o diferenta.

Scris: 25 Feb 2013, 18:53
de Vlad_Ciotescu
va multumesc de raspuns

Scris: 05 Mar 2013, 23:22
de Stefan_Ilioaica
Salut.
Ce anume ar trebui facut pentru a creea optiunea de salvare a unui joc?
Sa fiu mai explicit: Apas control s, iar cand fac asta, vreau ca joculetul meu sa fie salvat. Numarul de vieti ramase, energia, nivelul, tot.
Cum trebuie procedat?

Scris: 09 Mar 2013, 15:10
de Manu
Trebuie sa faci o functie, sa-i spunem, save_game() pe care sa o chemi in momentul apasarii Control + S.

Functia save_game() va contine codul care salveaza valoarea actuala a tuturor variabilelor care stabilesc starea actuala a jocului: numar vieti, putere, nivel, arme, cantitate munitie si ce o mai fi; deci toate valorile variabilelor care stabilesc starea actuala a jocului trebuie scrise intr-un fisier sau mai multe pe hard, ori scrise in registri, depinde cum preferi.

La deschiderea unui joc salvat, vei chema o functie, sa-i zicem, open_game(). In aceasta functie va fi cod care sa citeasca valorile salvate in fisier sau in registri si va atribui valorile variabilelor corespunzatoare, astfel incat jocul ajunge in ipostaza din momentul salvarii.

Viitoarea versiune BGT, 1.3

Scris: 13 Mar 2013, 13:49
de Alexandru
Recent, Philip Bennefall a postat pe forum-ul Blastbay un jurnal de schimbari (adica un change log) a viitoarei versiuni a BGT-ului, 1.3 revizia 1, care se dovedeste a fi unul destul de mare.
Version 1.3 (revision 1):
* Updated the script interpreter to the latest version which fixes some more bugs found by users, and adds the following features:
1. The infomous "unexpected end of file" compilation error now shows a lot more information.
2. It is now possible to declare several class properties of the same type on a single line, separated by comma.
3. It is also possible to initialize class properties in their declaration, rather than having to do it in the constructor.
Note: This means that some obscure scripts, where a child class calls a method in the parent class that in turn tries to access its members before its constructor has been called by the child class, will now result in a null pointer access script runtime error. This happens very rarely, but should be taken into account if you are upgrading and have scripts that may potentially reproduce the above scenario.
4. Large scripts will now compile significantly faster, and loading of precompiled byte code is faster as well.
5. The script compiler no longer implements a default constructor for classes that define a constructor with arguments. If you want both a default constructor and a constructor that takes arguments, you must define both of them explicitly (see the language tutorial for more information).
* Added DLL call support.
* Added the ability to compile scripts either as debug or release builds.
* Added some basic serialization functions that make it easier to save and load data from files or from memory.
* Made it possible to serialize and restore the exact state of the random number generator at any point in time.
* Added an object called combination which contains algorithms to calculate different types of combinations from an arbitrarily large set of items (sponsored by Marc Andersen).
* Added a pan property to the tone synth object which affects all subsequently generated notes.
* Added reverberation to the tone synth object, which is controlled by various properties.
* Added a new function called is_admin which checks if the program is being run with administrator priviliges (thanks Liam).
* Added some new functions to force/simulate keystrokes (thanks Nikola).
* Added two new functions (string_base64_encode and string_base64_decode) which makes it possible to convert binary data to and from a printable, Ascii compatible representation.
* The keyhook is now automatically uninstalled when the user leaves the game window, and installed again when the window is reactivated. This is to prevent lag in certain screen readers when the user is working with an application other than the game.
* Upgraded to the Visual Studio 2010 compiler, which gives a performance boost.
* Changed it so that initial text that is placed in an input box is selected automatically when the window appears (thanks Nikola).
* Added a new folder constant (DIRECTORY_MY_DOCUMENTS), see appendix e for more details (thanks Liam).
* Optimized the string_contains function.
* Significantly optimized the internals of the sound_pool include class so that it now runs much faster.
* Made the script compilation result dialog show the amount of time that the compilation took.
* Added a speak_to_file method to the tts_voice object (thanks Marc).
* Added a function to hide the game window (thanks Nikola).
* Added the concept of named items to the dynamic_menu include class, making it easier to figure out what the chosen item is regardless of in what order the items were added.
* Added a new method to the audio_form class that allows a listbox cursor to be changed (Thanks Damien).
* Fixed a serious bug in the audio subsystem which would cause random crashes.
* Fixed a crash which would occur when converting large floating point numbers to strings (thanks Corey).
* Fixed a bug which would cause the string_split function to enter an infinite loop if the NULL terminator was used in the delimiter (thanks Damien).
* Fixed a crash which would sometimes occur after a runtime error (thanks Corey).
* Improved support for the Window Eyes screen reader (thanks Aaron and Jason).
* Fixed a problem where erronious warning messages could be triggered if the initialization of the global variables failed (thanks Damien).
* Fixed a bug in the sound_pool include class which made it try to reload a sound that came back within earshot, from the currently used storage rather than the storage that was active when the sound was initially loaded (thanks Liam).
* Fixed a bug in the audio_form class in the get_list_count method where the maximum index was being returned rather than the number of items as described in the documentation (Thanks Damien).
* Fixed several multiline input field bugs in the audio_form class (Thanks Damien).
* Updated the language tutorial with information about the new behavior of automatic default constructors, and about how to assign values to class properties directly in their declaration.
* Added a serialization tutorial.
* Documented the string object.
* Added four missing overloaded operators to the list in the language tutorial (opPreInc, opPreDec, opPostInc and opPostDec).
* Added a note to the number_to_hex_string documentation regarding the fact that it produces lowercase results (thanks Jordan).
* Added a list of command line options available in the BGT engine (see appendix g).
* Updated the documentation for the profiler to explain the differences when profiling debug versus release builds.
* Failed to document the new array methods mentioned in the change log for version 1.2 revision 1 (thanks Marc).
* Failed to document the new get_size method mentioned in the change log for version 1.2 revision 1 (thanks Damien).
* Failed to document the sound_is_playing method in the sound_pool include class(Thanks Lukás).
* Failed to document several methods of the dynamic_menu class (Thanks Lukás).
* Fixed a few typos in the html code in the documentation (thanks Nikola).