Programare in Jaws Scripting, aplicatii practice
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Programare in Jaws Scripting, aplicatii practice
In urma unor discutii din timpul cursului de Jaws Scripting, am ajuns la concluzia ca cel mai bine ar fi sa discutam pe forum despre realizarea unor scripturi prin exemple practice, vizibile pentru toata lumea, mai ales utile pentru cei care in viitor vor mai vrea sa invete acest limbaj.
WEB-ul este foarte sarac in aceasta privinta, practic la nivel global se gasesc putine discutii, exemple legate de acest scripting.
Sper ca aici vor fi in timp mai multe coduri utile, originale, facute de noi in urma cursului, a citiri manualului, a studiului individual etc..
Aduc la zi, cu acordul lui Grifnas si Cornel, pe forum discutia avuta in cadrul listei de discutii create ca suport pentru cursul nostru de luni seara din aceasta perioada. Sa speram ca apar si alti participanti, fie cu intrebari legate de functii, procedee etc, fie cu randuri de cod propriu-zis.
Practic sugestia a fost demonstrarea modului de realizare a unui joc. Cum Pontes Casino era deja facut, am zis sa incepem cu Pontes Trucker in mod treptat cu codurile expuse.
Asadar, ar fi bine ca acest subiect sa contina mesaje legate mai mult de scripting decat de sugestii pentru joc.
WEB-ul este foarte sarac in aceasta privinta, practic la nivel global se gasesc putine discutii, exemple legate de acest scripting.
Sper ca aici vor fi in timp mai multe coduri utile, originale, facute de noi in urma cursului, a citiri manualului, a studiului individual etc..
Aduc la zi, cu acordul lui Grifnas si Cornel, pe forum discutia avuta in cadrul listei de discutii create ca suport pentru cursul nostru de luni seara din aceasta perioada. Sa speram ca apar si alti participanti, fie cu intrebari legate de functii, procedee etc, fie cu randuri de cod propriu-zis.
Practic sugestia a fost demonstrarea modului de realizare a unui joc. Cum Pontes Casino era deja facut, am zis sa incepem cu Pontes Trucker in mod treptat cu codurile expuse.
Asadar, ar fi bine ca acest subiect sa contina mesaje legate mai mult de scripting decat de sugestii pentru joc.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Zicea cornel ca la jocul urmator sa arat cam cum fac lucrurile treptat.
Ei bine am creat acum ceasul virtual pentru acel Trucker.
Practic am facut deocamdata ca idee o chestie in care sa existe timp intre luni ora 13 prima saptamana pana duminica ora 23 a cincia saptamana.
Pentru asta tot ce e mai jos este suficient intr-o forma bruta.
Daca dati paste la tot in scripturile de notepad si puneti la cele doua scripturi cate o tasta scurtatura, de exemplu F2 pentru SayCurrentTime si F12 pentru TimeForward, se va vedea cum tot creste ceasul treptat, sunt trei SayString-uri care anunta ceea ce trebuie, ora, ziua si a cata saptamana e in derulare.
Asta e de forma, ramane de vazut ce cosmetizari trebuie aduse ceasului sa nu dea gres, de suficient e suficient un timp de aproximativ 5 saptamani.
Asadar mai jos codul delimitat de Inceput cod si Sfarsit cod:
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|A patra saptamana|A cincia saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = "Luni"
Let iSaptamana = 1
Let sSaptamana = "Prima saptamana"
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = 2
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
Ei bine am creat acum ceasul virtual pentru acel Trucker.
Practic am facut deocamdata ca idee o chestie in care sa existe timp intre luni ora 13 prima saptamana pana duminica ora 23 a cincia saptamana.
Pentru asta tot ce e mai jos este suficient intr-o forma bruta.
Daca dati paste la tot in scripturile de notepad si puneti la cele doua scripturi cate o tasta scurtatura, de exemplu F2 pentru SayCurrentTime si F12 pentru TimeForward, se va vedea cum tot creste ceasul treptat, sunt trei SayString-uri care anunta ceea ce trebuie, ora, ziua si a cata saptamana e in derulare.
Asta e de forma, ramane de vazut ce cosmetizari trebuie aduse ceasului sa nu dea gres, de suficient e suficient un timp de aproximativ 5 saptamani.
Asadar mai jos codul delimitat de Inceput cod si Sfarsit cod:
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|A patra saptamana|A cincia saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = "Luni"
Let iSaptamana = 1
Let sSaptamana = "Prima saptamana"
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = 2
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
Ultima oară modificat 19 Ian 2010, 17:35 de către Manu, modificat 1 dată în total.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Intr-adevar era o greseala la randul cu adaugarea cu 1 la variabila iSaptamani.
Deci randul:
let iSaptamana = 2
trebuie inlocuit cu:
Let iSaptamana = iSaptamana + 1
apoi va merge perfect.
Sa explic functia StringSegment:
Avem o constanta care arata astfel:
sZi = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica"
Ei bine, noi putem extrage cate un segment, adica unul dintre cele sapte reprezentand fiecare zi a saptamanii.
Cele sapte segmente au intre ele cate o bara verticala.
Atunci, functia StringSegment are trei parametri.
Primul este stringul care contine sirul de segmente, in cazul nostru sZi care a fost definit ca si constanta.
Al doilea parametru este intre ghilimele semnul care delimiteaza cele sapte segmente, adica bara verticala.
Al treilea parametru este numarul care indica al catelea segment sa fie extras.
Asadar, daca avem constanta:
sZi = "America"Europa", deci cu bara verticala intre ele, va rezulta cam astfel:
StringSegment = (sZi, ""|", 2)
ar insemna ca din stringul sZi scoate al doilea segment, adica europa.
Se poate introduce tot randul de mai sus intr-un SayString si se poate verifica prin probe.
In ceasul acela virtual arata cam asa:
StringSegment (sZi, "|", iZi)
sZi era sirul de zile,
Bara verticala era semnul de delimitare
iZi era numarul intre 1 si 7, numar rezultat in urma altor calcule cu If.
Practic chestia cu zilele se putea face cu If, dar era prea lung, asa am ajuns la ceva foarte sintetic.
Sper ca s-a inteles.
Deci randul:
let iSaptamana = 2
trebuie inlocuit cu:
Let iSaptamana = iSaptamana + 1
apoi va merge perfect.
Sa explic functia StringSegment:
Avem o constanta care arata astfel:
sZi = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica"
Ei bine, noi putem extrage cate un segment, adica unul dintre cele sapte reprezentand fiecare zi a saptamanii.
Cele sapte segmente au intre ele cate o bara verticala.
Atunci, functia StringSegment are trei parametri.
Primul este stringul care contine sirul de segmente, in cazul nostru sZi care a fost definit ca si constanta.
Al doilea parametru este intre ghilimele semnul care delimiteaza cele sapte segmente, adica bara verticala.
Al treilea parametru este numarul care indica al catelea segment sa fie extras.
Asadar, daca avem constanta:
sZi = "America"Europa", deci cu bara verticala intre ele, va rezulta cam astfel:
StringSegment = (sZi, ""|", 2)
ar insemna ca din stringul sZi scoate al doilea segment, adica europa.
Se poate introduce tot randul de mai sus intr-un SayString si se poate verifica prin probe.
In ceasul acela virtual arata cam asa:
StringSegment (sZi, "|", iZi)
sZi era sirul de zile,
Bara verticala era semnul de delimitare
iZi era numarul intre 1 si 7, numar rezultat in urma altor calcule cu If.
Practic chestia cu zilele se putea face cu If, dar era prea lung, asa am ajuns la ceva foarte sintetic.
Sper ca s-a inteles.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
M-am mai gandit la "Pontes Casino", la chestiunea cu "piedica" pentru "aruncarea zarurilor" de catre computer si... cred incontinuare ca ar fi interesant ca aceasta "piedica" sa fie ajustata la limita:
(< totalul jucatorului && < 30)...
Am studiat putin si "Pontes time"-ul si, pentru a-mi dovedi ca am inteles mecanismul de numarare a orelor, zilelor si saptamanilor am lucrat cate ceva pe codul trimis de Manu; ceea ce am facut se afla mai jos:
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|A patra saptamana|A cincea saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = 1
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = iSaptamana + 1
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
If iSaptamana == 6 Then
AutoStartEvent ()
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
(< totalul jucatorului && < 30)...
Am studiat putin si "Pontes time"-ul si, pentru a-mi dovedi ca am inteles mecanismul de numarare a orelor, zilelor si saptamanilor am lucrat cate ceva pe codul trimis de Manu; ceea ce am facut se afla mai jos:
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|A patra saptamana|A cincea saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = 1
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = iSaptamana + 1
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
If iSaptamana == 6 Then
AutoStartEvent ()
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
Grigore Frisan
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Da,ai setat ca in finalul celor 5 saptamani sa se reseteze, adica sa se intample ceea ce are loc in AutoStartEvent.
In mod normal nu va fi neaparata nevoie pentru ca nu se va ajunge pana acolo probabil, dar e bine oricum ca e o piedica.
AutoStartEvent-ul actual este doar de forma, pentru a reseta timpul la valoare ainitiala, luni prima saptamana, ora 1, altfel... tot se mergea inainte pana la repornirea Jaws-ului ori trebuia facut un script de forma care doar sa aduca variabilele la valoarea initiala.
Deocamdata nu avem traseul, abia apoi reglam lucrurile clar la ceas si facem AutoStartEventul sa fie doar la pornirea jocului pentru prima data, nu de fiecare data cand se da alt + tab si se ajunge pe fereastra.
E greu cu traseul... inca nici nu stiu exact care ar fi mai bun, ma gandisem Londra Bucuresti, se trece si prin Cluj... Ar fi interesant pentru ca este si Canalul Manecii de traversat pe acolo... insa deocamdata asteptam dupa cineva de pe la geografie sau cineva care gaseste pe internet un site pentru trasee de camioane in Europa.
In mod normal nu va fi neaparata nevoie pentru ca nu se va ajunge pana acolo probabil, dar e bine oricum ca e o piedica.
AutoStartEvent-ul actual este doar de forma, pentru a reseta timpul la valoare ainitiala, luni prima saptamana, ora 1, altfel... tot se mergea inainte pana la repornirea Jaws-ului ori trebuia facut un script de forma care doar sa aduca variabilele la valoarea initiala.
Deocamdata nu avem traseul, abia apoi reglam lucrurile clar la ceas si facem AutoStartEventul sa fie doar la pornirea jocului pentru prima data, nu de fiecare data cand se da alt + tab si se ajunge pe fereastra.
E greu cu traseul... inca nici nu stiu exact care ar fi mai bun, ma gandisem Londra Bucuresti, se trece si prin Cluj... Ar fi interesant pentru ca este si Canalul Manecii de traversat pe acolo... insa deocamdata asteptam dupa cineva de pe la geografie sau cineva care gaseste pe internet un site pentru trasee de camioane in Europa.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Da, si eu cred ca e greu cu traseele de camioane... exista un soft "Sony Map", destul de accesibil, dealtfel, care poate sa simuleze trasee in Europa... ma uit sa vad daca il mai am si, daca da, ti-l
dau sa vezi in ce masura ar putea sa-ti fie de folos...
In rest, cred ca ar fi util un topic, pe forum, in care oamenii sa-si
poata exprima ideile care, de ce nu?!, ar putea fi folositoare...
Astept sa vad si eu cam cum te-ai gandit sa-l structurezi, la nivel de cod, jocul...
dau sa vezi in ce masura ar putea sa-ti fie de folos...
In rest, cred ca ar fi util un topic, pe forum, in care oamenii sa-si
poata exprima ideile care, de ce nu?!, ar putea fi folositoare...
Astept sa vad si eu cam cum te-ai gandit sa-l structurezi, la nivel de cod, jocul...
Grigore Frisan
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Da, astea sunt putin mai dificil de realizat... problema sunetelor care sunt intrerupte de alte sunete, dar... ce stiu, poate fi de fapt un avantaj, cand lovitura celuilalt se aude, automat nu se mai aude a celui dinainte, un avantaj sau nu al functiei PlaySound () din Jaws Scripting.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Revin cu o mica revizuire la codul "Pontes time"... m-am cam grabit cand am raspuns mesajului postat de Cornel...
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|a patra saptamana|A cincea saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = 1
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = iSaptamana + 1
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
If iZi == 1 && iSaptamana > 5 Then
AutoStartEvent ()
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
Inceput cod
Globals
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|a patra saptamana|A cincea saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = 1
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = iSaptamana + 1
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
If iZi == 1 && iSaptamana > 5 Then
AutoStartEvent ()
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Sfarsit cod
Grigore Frisan
Da, e clar. S-a inteles perfect, ba chiar la ultimul if nici nu e nevoie de &&.
M-am jucat si eu cu un ciclu de patru zile in care sunt cate patru ore si in fiecare ora cate sase minute.
Inceput cod
Globals
int iMinut,
int iOra,
string sOra,
int iZi,
string sZi
Const
sZile = "luni|marti|miercuri|joi",
sOre = "prima ora|a doua ora|a treia ora|a patra ora"
Function AutoStartEvent ()
let iMinut = 1
let iOra = 1
let sOra = StringSegment (sOre, "|", iOra)
let iZi = 1
let sZi = StringSegment (sZile, "|", iZi)
EndFunction
Function Timp ()
let iMinut = iMinut + 1
If iMinut == 7 Then
let iMinut = 1
let iOra = iOra + 1
let sOra = StringSegment (sOre, "|", iOra)
EndIf
If iOra == 5 Then
let iOra = 1
let sOra = StringSegment (sOre, "|", iOra)
let iZi = iZi + 1
let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 5 Then
AutoStartEvent ()
EndIf
EndFunction
Function SpuneTimp ()
SayString (IntToString (iMinut))
Beep ()
SayString (sOra)
Pause ()
SayString (sZi)
EndFunction
Script Derulare ()
Timp ()
SpuneTimp ()
EndScript
Script TimpCurent ()
SpuneTimp ()
EndScript
Sfarsit cod
M-am jucat si eu cu un ciclu de patru zile in care sunt cate patru ore si in fiecare ora cate sase minute.
Inceput cod
Globals
int iMinut,
int iOra,
string sOra,
int iZi,
string sZi
Const
sZile = "luni|marti|miercuri|joi",
sOre = "prima ora|a doua ora|a treia ora|a patra ora"
Function AutoStartEvent ()
let iMinut = 1
let iOra = 1
let sOra = StringSegment (sOre, "|", iOra)
let iZi = 1
let sZi = StringSegment (sZile, "|", iZi)
EndFunction
Function Timp ()
let iMinut = iMinut + 1
If iMinut == 7 Then
let iMinut = 1
let iOra = iOra + 1
let sOra = StringSegment (sOre, "|", iOra)
EndIf
If iOra == 5 Then
let iOra = 1
let sOra = StringSegment (sOre, "|", iOra)
let iZi = iZi + 1
let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 5 Then
AutoStartEvent ()
EndIf
EndFunction
Function SpuneTimp ()
SayString (IntToString (iMinut))
Beep ()
SayString (sOra)
Pause ()
SayString (sZi)
EndFunction
Script Derulare ()
Timp ()
SpuneTimp ()
EndScript
Script TimpCurent ()
SpuneTimp ()
EndScript
Sfarsit cod
Cornel
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Excelent, e foarte bine!
Practic functia StringSegment sintetizeaza mult lucrurile
De exemplu tot asa la jocul cu camioane, o ruta intreaga va consta dintr-un string lung cu toate locatiile prin care se trece delimitate de bare verticale. Astfel, cand se avanseaza, este doar o chestie de tipul:
Let iLocatie = iLocatie + 1
astfel se tot avanseaza printre segmentele stringului lung.
Daca toate functiile sunt bine determinate, apoi nu trebuie decat pentru
fiecare actiune cate o functie de tipul:
PontesTime () care va face sa avanseze ceasul,
PontesRoute () care va tot face sa se avanseze din locatie in locatie.
Acestea fiind apoi cuprinse intr-o functie mai mare care sa spuna de cate ori sa mearga ceasul etc. Cand alegi sa dormi de exemplu pentru 5 ore, se face cu un While ca functia PontesTime sa se intample de cinci ori in cadrul functiei PontesSleep ().
Cam asa se programeaza, putem spune ca astea, ceasul, ruta etc sunt niste obiecte care se tot schimba in functie de mediu, de actiuni etc..
Acum Grigore are un program bun pentru rute in europa. O sa facem ca sa fie mai interesant sa fie ruta obligatoriu prin niste orase mai importante, programul permite,a poi da kilometrajele, da numele tuturor autostrazilor etc, apare pana si Gilau, Turda etc, pana si ca intre Pitesti si Bucuresti este A1, autostrada 1, asa se numeste aceea in Romania.
Din niste discutii telefonice cu Grigore am ajuns la concluzia ca trebuie o motivatie pentru a merge astfel prin orase mai importante si nu pe cel mai scurt drum sugerat, in Londra se fac telefoanele de lux de la Nokia, Vertu, asta sa fie una dintre marfuri din care nist eparti sa fie lasate la Paris, Torino, Milano, Viena, Budapesta, Cluj, Bucuresti. In cluj eventual sa se treaca si pe la fabrica Nokia de aici pentru un transport de telefoane ieftine pentru dealerii de pana la Bucuresti.
Acelasi camion sa duca si produse Dove care se fabrica tot in Anglia. Vedem noi mai exact apoi... intai sa mearga chestia cu deplasarea in functie de timp. Apoi va trebui putina documentare pentru pretul treceri camionului cu feribotul intre Dover si Calais, acolo peste canalul manecii, ne trebuie nume reale de hoterluri si restaurante din orasele importante. Ma gandeam ca in Cluj sa poti trece chiar si pe la Clubul Pontes unde poti juca un scurt biliard, event doar pe sunet, doar de reclama.
Adevarul e ca se pot multe chestii si asta incet incet se va face,a cum deja stiu ca merge treaba. Mai problematic va fi pe la sunete, acestea sa se intample cat de cat ok in conformitate cu actiunile...
Cred ca un sunet lung de motor de camion care sa se intrerupa doar cand un alt sunet, precum cel de frana intervine. Practic un wav care ruleaza, in Jaws Scripting este intrerupt doar de un alt wav, deci o alta functie PlaySound () care apare in peisaj.
Practic functia StringSegment sintetizeaza mult lucrurile
De exemplu tot asa la jocul cu camioane, o ruta intreaga va consta dintr-un string lung cu toate locatiile prin care se trece delimitate de bare verticale. Astfel, cand se avanseaza, este doar o chestie de tipul:
Let iLocatie = iLocatie + 1
astfel se tot avanseaza printre segmentele stringului lung.
Daca toate functiile sunt bine determinate, apoi nu trebuie decat pentru
fiecare actiune cate o functie de tipul:
PontesTime () care va face sa avanseze ceasul,
PontesRoute () care va tot face sa se avanseze din locatie in locatie.
Acestea fiind apoi cuprinse intr-o functie mai mare care sa spuna de cate ori sa mearga ceasul etc. Cand alegi sa dormi de exemplu pentru 5 ore, se face cu un While ca functia PontesTime sa se intample de cinci ori in cadrul functiei PontesSleep ().
Cam asa se programeaza, putem spune ca astea, ceasul, ruta etc sunt niste obiecte care se tot schimba in functie de mediu, de actiuni etc..
Acum Grigore are un program bun pentru rute in europa. O sa facem ca sa fie mai interesant sa fie ruta obligatoriu prin niste orase mai importante, programul permite,a poi da kilometrajele, da numele tuturor autostrazilor etc, apare pana si Gilau, Turda etc, pana si ca intre Pitesti si Bucuresti este A1, autostrada 1, asa se numeste aceea in Romania.
Din niste discutii telefonice cu Grigore am ajuns la concluzia ca trebuie o motivatie pentru a merge astfel prin orase mai importante si nu pe cel mai scurt drum sugerat, in Londra se fac telefoanele de lux de la Nokia, Vertu, asta sa fie una dintre marfuri din care nist eparti sa fie lasate la Paris, Torino, Milano, Viena, Budapesta, Cluj, Bucuresti. In cluj eventual sa se treaca si pe la fabrica Nokia de aici pentru un transport de telefoane ieftine pentru dealerii de pana la Bucuresti.
Acelasi camion sa duca si produse Dove care se fabrica tot in Anglia. Vedem noi mai exact apoi... intai sa mearga chestia cu deplasarea in functie de timp. Apoi va trebui putina documentare pentru pretul treceri camionului cu feribotul intre Dover si Calais, acolo peste canalul manecii, ne trebuie nume reale de hoterluri si restaurante din orasele importante. Ma gandeam ca in Cluj sa poti trece chiar si pe la Clubul Pontes unde poti juca un scurt biliard, event doar pe sunet, doar de reclama.
Adevarul e ca se pot multe chestii si asta incet incet se va face,a cum deja stiu ca merge treaba. Mai problematic va fi pe la sunete, acestea sa se intample cat de cat ok in conformitate cu actiunile...
Cred ca un sunet lung de motor de camion care sa se intrerupa doar cand un alt sunet, precum cel de frana intervine. Practic un wav care ruleaza, in Jaws Scripting este intrerupt doar de un alt wav, deci o alta functie PlaySound () care apare in peisaj.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
O sa fie foarte interesant. Putem trece camionul prin tunelu de sub Canalul Manecii. Ar fi fain sa calculam si consumu de motorina si chiar sa se prevada si o pana doua sau niste defectiuni pe traseu, sau obligativitatea de a stationa din cauza unor blocaje, mai ales prin romania. Oricum, poate fi un joc complex.
Cornel
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Timpul pozitiei curente in Sound Forge
Se punea problema unui scriptulet care sa ne spuna timpul pe care este pozitionat cursorul in sound Forge.
Un script simplu, dar nu foarte bun, insa unul care functioneaza corect si merge pentru antrenamente ar fi mai jos. Il comentez dupa cod.
Inceput cod
Globals
String sLongTime,
String sHours,
String sMinutes,
String sSeconds,
String sMS
Function GetSFCurrentPosition ()
SpeechOff ()
PCCursor ()
TypeKey ("Control+G")
Pause ()
Let sLongTime = GetSelectedText ()
Pause ()
TypeKey ("Escape")
SpeechOn ()
EndFunction
Script SpuneTimpIntreg ()
GetSFCurrentPosition ()
SayString (sLongTime)
EndScript
Script SpuneMiimileDeSecunda ()
GetSFCurrentPosition ()
Let sMS = StringSegment (sLongTime, ",", 2)
SayString (sMS)
EndScript
Sfarsit cod
Asadar am creat niste variabile globale pentru intreg stringul care apare la combinatia Control + G si pentru fiecare segment posibil.
Functia definita se numeste GetSFCurrentPosition () si cred ca este destul de clara. Practic se da rapid un Control + G, apoi se atribuie textul selectat variabilei sLongTime, dupa care se da Escape, toate acestea cu sintetizatorul amutit.
Avem apoi un script SpuneTimpIntreg () care nu face altceva decat sa apeleze functia noastra GetSFCurrentPosition () si sa spuna variabila sLongTime.
Mai este un scriptulet pentru miimile de secunda, scriptulet rezolvat cu functia StringSegment ().
Practic timpul acela lung este de forma: 01:11:12,321 - deci intre ore, minute si secunde este semnul ":" (doua puncte), iar intre secunde si miimi este o virgula. Putem considera un delimitator acea virgula, practic fiind astfel doar doua segmente.
Functia aplicata va scoate al doilea segment daca luam ca delimitator acea virgula:
StringSegment (sLongTime, ",", 2)
Asadar, scriptul numit SpuneMiimileDeSecunda () va anunta in SayString () variabila sMS, dupa ce a apelat functia general utila GetSFCurrentTime () si a extras segmentul de dupa virgula.
Daca se ia tot codul de mai sus, nu mai trebuie decat atasarea unor combinatii de taste cu Control + D cand cursorul se afla pe unul dintre randurile unuia dintre cele doua scripturi.
Provocarea mea este gasirea unei solutii pentru a extrage doar numarul de secunde printr-un alt script care sa vina in completarea celor doua existente.
Un script simplu, dar nu foarte bun, insa unul care functioneaza corect si merge pentru antrenamente ar fi mai jos. Il comentez dupa cod.
Inceput cod
Globals
String sLongTime,
String sHours,
String sMinutes,
String sSeconds,
String sMS
Function GetSFCurrentPosition ()
SpeechOff ()
PCCursor ()
TypeKey ("Control+G")
Pause ()
Let sLongTime = GetSelectedText ()
Pause ()
TypeKey ("Escape")
SpeechOn ()
EndFunction
Script SpuneTimpIntreg ()
GetSFCurrentPosition ()
SayString (sLongTime)
EndScript
Script SpuneMiimileDeSecunda ()
GetSFCurrentPosition ()
Let sMS = StringSegment (sLongTime, ",", 2)
SayString (sMS)
EndScript
Sfarsit cod
Asadar am creat niste variabile globale pentru intreg stringul care apare la combinatia Control + G si pentru fiecare segment posibil.
Functia definita se numeste GetSFCurrentPosition () si cred ca este destul de clara. Practic se da rapid un Control + G, apoi se atribuie textul selectat variabilei sLongTime, dupa care se da Escape, toate acestea cu sintetizatorul amutit.
Avem apoi un script SpuneTimpIntreg () care nu face altceva decat sa apeleze functia noastra GetSFCurrentPosition () si sa spuna variabila sLongTime.
Mai este un scriptulet pentru miimile de secunda, scriptulet rezolvat cu functia StringSegment ().
Practic timpul acela lung este de forma: 01:11:12,321 - deci intre ore, minute si secunde este semnul ":" (doua puncte), iar intre secunde si miimi este o virgula. Putem considera un delimitator acea virgula, practic fiind astfel doar doua segmente.
Functia aplicata va scoate al doilea segment daca luam ca delimitator acea virgula:
StringSegment (sLongTime, ",", 2)
Asadar, scriptul numit SpuneMiimileDeSecunda () va anunta in SayString () variabila sMS, dupa ce a apelat functia general utila GetSFCurrentTime () si a extras segmentul de dupa virgula.
Daca se ia tot codul de mai sus, nu mai trebuie decat atasarea unor combinatii de taste cu Control + D cand cursorul se afla pe unul dintre randurile unuia dintre cele doua scripturi.
Provocarea mea este gasirea unei solutii pentru a extrage doar numarul de secunde printr-un alt script care sa vina in completarea celor doua existente.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)