Please login or register.

Login with username, password and session length
Advanced search  

News:

Latest WME version: WME 1.9.1 (January 1st, 2010) - download

Author Topic: Problém ve switch  (Read 5279 times)

0 Members and 1 Guest are viewing this topic.

Hooke

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 38
    • View Profile
Problém ve switch
« on: February 10, 2006, 02:25:00 AM »

Ahoj všem.

Ani to moc dlouho netrvalo a jsem tu znova s nějakým problémem ( doufám, že ho zase nevyřeším při psaní do fóra :) ).
Mám problém se samotným kódem, syntakticky i sémanticky by to mělo být v pohodě.

Code: [Select]
on "ButtonGreen"
{
var Monitor=UI.GetControl( "Monitor" );

Game.Interactive=false;
UI.Visible=false;
//actor.PlayAnim( "" );

switch( Monitor.Text )
{
case "123456789":
if( BOOLEAN_PROMENNA )
{

}
else
{
switch( INT_PROMENNA )  // jedna se o globalni promennou, na zacatku hry je nastavena na 0
{
case 0:
INT_PROMENNA=1;
break;

case 1:
INT_PROMENNA=2;
break;

case 2:
break;
}
}

// tento break se jiz neprovede (skript se zacykli) pokud break odstranim, tak se pokracuje na default a skript v poradku skonci
break;

default:
Sleep( 2000 );
}

//Actor.StopAnim()
Monitor.Text="";
Game.Interactive=true;
}

Je to opravdu zvláštní. Buďto to je bug ve WME, nebo má neschopnost dělat ve WME bez chyb :).
Logged

djb

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • ... dream journey beyond ...
    • View Profile
    • DreamJourneyBeyond.com
Re: Problém ve switch
« Reply #1 on: February 10, 2006, 11:07:37 AM »

Skus to optimalizovat na mensi pocet switchov, teda aspon podla mna je tam ten druhy switch uplne zbytocny a riesil by som to radsej ifkami :-\
...ale neviem, ci som to vobec spravne pochopil ;D

Code: [Select]
switch( Monitor.Text ) {
  case "123456789":
  if(! BOOLEAN_PROMENNA ) {
     if(! INT_PROMENNA ) INT_PROMENNA = 1;
     else INT_PROMENNA = 2;
  }
  break;

  default: Sleep( 2000 ); break;
}
« Last Edit: February 10, 2006, 11:09:37 AM by djb »
Logged

Mnemonic

  • WME developer
  • Administrator
  • Addicted to WME forum
  • *
  • Karma: 41
  • Offline Offline
  • Gender: Male
  • Posts: 5683
    • View Profile
    • Dead:Code Site
Re: Problém ve switch
« Reply #2 on: February 10, 2006, 11:13:27 AM »

Ano, je to bug, vim o tom. Kompilator skriptu spatne snasi switch vnoreny v jinem switchi ci cyklu. Takze ta uprava, co navrhuje djb, je nutna.
Logged
Yes, I do have a twitter account
Please don't send me technical questions in private messages, use the forum. ::wave

Hooke

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 38
    • View Profile
Re: Problém ve switch
« Reply #3 on: February 10, 2006, 11:15:42 AM »

Díky za odpověď chlapi :).
Logged

djb

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • ... dream journey beyond ...
    • View Profile
    • DreamJourneyBeyond.com
Re: Problém ve switch
« Reply #4 on: February 10, 2006, 11:58:09 AM »

Kompilator skriptu spatne snasi switch vnoreny v jinem switchi ci cyklu.
Osobne, tiez switchove vnorenia spatne znasam ;D ... neviem preco, ale ked niekde vidim takto koncipovany zdrojak, tak mi kruti bulvami, pretoze to vedie ku absolutnej neprehladnosti ... radsej to XY krat zoptimalizujem :D
Logged

Hooke

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 38
    • View Profile
Re: Problém ve switch
« Reply #5 on: February 10, 2006, 12:11:57 PM »

Kompilator skriptu spatne snasi switch vnoreny v jinem switchi ci cyklu.
Osobne, tiez switchove vnorenia spatne znasam ;D ... neviem preco, ale ked niekde vidim takto koncipovany zdrojak, tak mi kruti bulvami, pretoze to vedie ku absolutnej neprehladnosti ... radsej to XY krat zoptimalizujem :D

No nic proti, ale jestli si myslíš, že if else if else je zrovna optimalizace tak se pleteš ;). Zkus si představit kód v assembleru, který se vygeneruje z if else, if else.... a potom si představ ten stejný kód se switch :) ( mluvím o switch, který byl implementován v C, ono co se týče switche v pascalu, tak ten tak optimalizovaný není ;) ). Je pravda, že použití switche má užitek pokud máš více různých hodnot, na které chceš reagovat (3 už je na hraně). Navíc máš ve switch výhodu, když se později rozhodneš přidat další věc na kterou chceš reagovat ;).

Já zase kroutím bulvama, když vidím if else, if else, if else....  ;D.

Zaleží asi na přístupu k věci, někdo má rád holky a jiný zase vdolky  >:D. A komu záleží na těch 100ns o které to procesor možná zdrží  :D.
Logged

djb

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 28
  • ... dream journey beyond ...
    • View Profile
    • DreamJourneyBeyond.com
Re: Problém ve switch
« Reply #6 on: February 10, 2006, 01:32:54 PM »

Já zase kroutím bulvama, když vidím if else, if else, if else....
Logged

Hooke

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 38
    • View Profile
Re: Problém ve switch
« Reply #7 on: February 10, 2006, 02:35:06 PM »

Já zase kroutím bulvama, když vidím if else, if else, if else....�  ;D.
No moment!!! ;D ... nepisal som o "optimalizacii" cez if/else ;) ... ked sa hodnoty v premennej pekne pripravia, tak sa da vhodne ANDovat ;)

Tak to jo, ono to vyznělo, jako kdyby jsi chtěl optimalizovat skrze použití if else if else ...  ;D . Optimalizace skrze boolovu algebru je naprosto jasná věc, akorát mě trochu štve, že WME skripty nepoužívají zkrácené vyhodnocování výrazů, ale zase to bychom toho chtěli moc  >:D.
Logged
 

Page created in 0.063 seconds with 23 queries.