Olá,
Estou desenvolvendo um aplicativo em Ginga-NCL e estou com dificuldades em alguns pontos:
O aplicativo é o seguinte:
O usuário deve ordenar as letras de uma palavra que estão inicialmente embaralhadas.
Minha idéia foi a seguinte: Coloco uma imagem da palavra com as letras embaralhadas e abaixo de cada letra eu associo um número, por exemplo:
U A L
1 2 3
O usuário deve digitar (via controle remoto) o número correspondente à cada letra na ordem correta (no caso do exemplo: 3,1,2). A cada número digitado, a letra correspondente apareceria em uma região abaixo de forma que se o usuário digitasse a sequencia correta ele veria, no caso do exemplo, a seguinte sequência escrita na tela:
L U A
Algumas de minhas dificuldades são:
1) Dado que o usuário digitou um número e a sua letra correspondente foi para a primeira posição, como fazer para que o próximo número digitado envie a segunda letra para a segunda posição. Ou seja, como fazer para que, após digitado um número e anexada sua letra, a região do próximo número seja a seguinte. Sempre lembrando que o usuário pode ter digitado qualquer uma das opções a qualquer momento.
2) Como criar um mecanismo para que, ao final da palavra digitada, o sistema verifique se o usuário digitou ou não a seqüência correta.
Agradeço qualquer comentário que possa me encaminhar à alguma solução.
Se alguem tiver alguma outra idéia que considere mais simples para a implementação do aplicativo, sinta-se a vontade para compartilhar.
Obrigado.
Autor: Dorival Natal Neto
1515 comentários
<ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" id="Letras">
<head>
<regionBase>
<region id="rgTV">
<region id="rgFundo" width="30%" height="10%" left="0%" top="50%" zIndex="0"/>
<region id="rgNum1" width="10%" height="10%" left="0%" top="70%" zIndex="1"/>
<region id="rgNum2" width="10%" height="10%" left="10%" top="70%" zIndex="1"/>
<region id="rgNum3" width="10%" height="10%" left="20%" top="70%" zIndex="1"/>
<region id="rgLetra1" width="10%" height="10%" left="0%" top="60%" zIndex="1"/>
<region id="rgLetra2" width="10%" height="10%" left="10%" top="60%" zIndex="1"/>
<region id="rgLetra3" width="10%" height="10%" left="20%" top="60%" zIndex="1"/>
</region>
</regionBase>
<descriptorBase>
<descriptor id="dFundo" region="rgFundo"/>
<descriptor id="dNum1" region="rgNum1"/>
<descriptor id="dNum2" region="rgNum2"/>
<descriptor id="dNum3" region="rgNum3"/>
<descriptor id="dLetra1" region="rgLetra1"/>
<descriptor id="dLetra2" region="rgLetra2"/>
<descriptor id="dLetra3" region="rgLetra3"/>
</descriptorBase> <connectorBase> <causalConnector id="onKeySelectionTestStopSetNDur">
<connectorParam name="var"/>
<connectorParam name="valueTest"/>
<connectorParam name="dur"/>
<connectorParam name="keyCode"/>
<compoundCondition operator="and">
<simpleCondition role="onSelection" key="$keyCode"/>
<assessmentStatement comparator="eq">
<attributeAssessment role="test" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="$valueTest"/>
</assessmentStatement>
</compoundCondition>
<compoundAction operator="seq">
<simpleAction role="stop"/>
<simpleAction role="set" value="$var" duration="$dur" max="unbounded"/>
</compoundAction>
</causalConnector> <causalConnector id="onEndAttributionFinalTestStart">
<compoundCondition operator="and">
<simpleCondition role="onEndAttribution"/>
<assessmentStatement comparator="eq">
<attributeAssessment role="test" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="*"/>
</assessmentStatement>
<assessmentStatement comparator="eq">
<attributeAssessment role="l1" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="L"/>
</assessmentStatement>
<assessmentStatement comparator="eq">
<attributeAssessment role="l2" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="U"/>
</assessmentStatement>
<assessmentStatement comparator="eq">
<attributeAssessment role="l3" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="A"/>
</assessmentStatement>
</compoundCondition>
<simpleAction role="start"/>
</causalConnector> <causalConnector id="onEndAttributionFinalNotTestStart">
<compoundCondition operator="and">
<simpleCondition role="onEndAttribution"/>
<assessmentStatement comparator="eq">
<attributeAssessment role="test" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="*"/>
</assessmentStatement>
<compoundStatement operator="and" isNegated="true">
<assessmentStatement comparator="eq">
<attributeAssessment role="l1" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="L"/>
</assessmentStatement>
<assessmentStatement comparator="eq">
<attributeAssessment role="l2" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="U"/>
</assessmentStatement>
<assessmentStatement comparator="eq">
<attributeAssessment role="l3" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="A"/>
</assessmentStatement>
</compoundStatement>
</compoundCondition>
<simpleAction role="start"/>
</causalConnector> </connectorBase>
</head>
<body>
<port id="pLetra1" component="letra1"/>
<port id="pLetra2" component="letra2"/>
<port id="pLetra3" component="letra3"/>
<port id="pNum1" component="num1"/>
<port id="pNum2" component="num2"/>
<port id="pNum3" component="num3"/> <!-- letras que aparecem na tela -->
<media id="letra1" descriptor="dLetra1" src="U.png">
<property name="bounds"/>
</media>
<media id="letra2" descriptor="dLetra2" src="A.png">
<property name="bounds"/>
</media>
<media id="letra3" descriptor="dLetra3" src="L.png">
<property name="bounds"/>
</media>
<!-- numeros que aparecem embaixo das letras -->
<media id="num1" descriptor="dNum1" src="1.png"/>
<media id="num2" descriptor="dNum2" src="2.png"/>
<media id="num3" descriptor="dNum3" src="3.png"/>
<!-- medias para exibir com o acerto ou nao -->
<media id="certo" descriptor="dFundo" src="certo.png"/>
<media id="errado" descriptor="dFundo" src="errado.png"/>
<!--noh que controla todo o programa-->
<media type="application/x-ginga-settings" id="nodeSettings">
<property name="atual1"/>
<property name="atual2"/>
<property name="atual3"/>
<property name="letra" value="1"/>
</media>
<!-- elos para o botao 1 -->
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="1"/>
<linkParam name="valueTest" value="1"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num1"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num1"/>
<bind role="set" component="nodeSettings" interface="atual1">
<bindParam name="var" value="U"/>
</bind>
<bind role="set" component="letra1" interface="bounds">
<bindParam name="var" value="0%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="2"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="1"/>
<linkParam name="valueTest" value="2"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num1"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num1"/>
<bind role="set" component="nodeSettings" interface="atual2">
<bindParam name="var" value="U"/>
</bind>
<bind role="set" component="letra1" interface="bounds">
<bindParam name="var" value="10%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="3"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="1"/>
<linkParam name="valueTest" value="3"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num1"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num1"/>
<bind role="set" component="nodeSettings" interface="atual3">
<bindParam name="var" value="U"/>
</bind>
<bind role="set" component="letra1" interface="bounds">
<bindParam name="var" value="20%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="*"/>
</bind>
</link> <!-- elos para o botao 2 -->
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="2"/>
<linkParam name="valueTest" value="1"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num2"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num2"/>
<bind role="set" component="nodeSettings" interface="atual1">
<bindParam name="var" value="A"/>
</bind>
<bind role="set" component="letra2" interface="bounds">
<bindParam name="var" value="0%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="2"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="2"/>
<linkParam name="valueTest" value="2"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num2"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num2"/>
<bind role="set" component="nodeSettings" interface="atual2">
<bindParam name="var" value="A"/>
</bind>
<bind role="set" component="letra2" interface="bounds">
<bindParam name="var" value="10%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="3"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="2"/>
<linkParam name="valueTest" value="3"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num2"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num2"/>
<bind role="set" component="nodeSettings" interface="atual3">
<bindParam name="var" value="A"/>
</bind>
<bind role="set" component="letra2" interface="bounds">
<bindParam name="var" value="20%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="*"/>
</bind>
</link>
<!-- elos para o botao 3 -->
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="3"/>
<linkParam name="valueTest" value="1"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num3"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num3"/>
<bind role="set" component="nodeSettings" interface="atual1">
<bindParam name="var" value="L"/>
</bind>
<bind role="set" component="letra3" interface="bounds">
<bindParam name="var" value="0%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="2"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="3"/>
<linkParam name="valueTest" value="2"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num3"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num3"/>
<bind role="set" component="nodeSettings" interface="atual2">
<bindParam name="var" value="L"/>
</bind>
<bind role="set" component="letra3" interface="bounds">
<bindParam name="var" value="10%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="3"/>
</bind>
</link>
<link xconnector="onKeySelectionTestStopSetNDur">
<linkParam name="keyCode" value="3"/>
<linkParam name="valueTest" value="3"/>
<linkParam name="dur" value="0s"/>
<bind role="onSelection" component="num3"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="stop" component="num3"/>
<bind role="set" component="nodeSettings" interface="atual3">
<bindParam name="var" value="L"/>
</bind>
<bind role="set" component="letra3" interface="bounds">
<bindParam name="var" value="20%,50%,10%,10%"/>
<bindParam name="dur" value="2s"/>
</bind>
<bind role="set" component="nodeSettings" interface="letra">
<bindParam name="var" value="*"/>
</bind>
</link> <!-- elo de teste quando encerra a aplicacao -->
<link xconnector="onEndAttributionFinalTestStart">
<bind role="onEndAttribution" component="nodeSettings" interface="letra"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="l1" component="nodeSettings" interface="atual1"/>
<bind role="l2" component="nodeSettings" interface="atual2"/>
<bind role="l3" component="nodeSettings" interface="atual3"/>
<bind role="start" component="certo"/>
</link> <link xconnector="onEndAttributionFinalNotTestStart">
<bind role="onEndAttribution" component="nodeSettings" interface="letra"/>
<bind role="test" component="nodeSettings" interface="letra"/>
<bind role="l1" component="nodeSettings" interface="atual1"/>
<bind role="l2" component="nodeSettings" interface="atual2"/>
<bind role="l3" component="nodeSettings" interface="atual3"/>
<bind role="start" component="errado"/>
</link>
</body>
</ncl>
<ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" id="Letras">
<head>
<regionBase>
<region id="rgTV">
<region id="rgFundo" width="30%" height="10%" left="0%" top="50%" zIndex="0"/>
<region id="rgLetra1" width="10%" height="10%" left="0%" top="60%" zIndex="1"/>
<region id="rgLetra2" width="10%" height="10%" left="10%" top="60%" zIndex="1"/>
<region id="rgLetra3" width="10%" height="10%" left="20%" top="60%" zIndex="1"/>
</region>
</regionBase>
<descriptorBase>
<descriptor id="dFundo" region="rgFundo"/>
<descriptor id="dLetra1" region="rgLetra1" focusIndex="1" moveLeft="3" moveRight="2" focusBorderWidth="-5" focusBorderColor="red"/>
<descriptor id="dLetra2" region="rgLetra2" focusIndex="2" moveLeft="1" moveRight="3" focusBorderWidth="-5" focusBorderColor="red"/>
<descriptor id="dLetra3" region="rgLetra3" focusIndex="3" moveLeft="2" moveRight="1" focusBorderWidth="-5" focusBorderColor="red"/>
</descriptorBase> <connectorBase> <causalConnector id="onSelectionTestSetNDur">
<connectorParam name="var"/>
<connectorParam name="valueTest"/>
<connectorParam name="dur"/>
<compoundCondition operator="and">
<simpleCondition role="onSelection"/>
<assessmentStatement comparator="eq">
<attributeAssessment role="test" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="$valueTest"/>
</assessmentStatement>
</compoundCondition>
<simpleAction role="set" value="$var" duration="$dur" max="unbounded"/>
</causalConnector> (....) O resto continuou igual. Logico, fazendo as adaptaçoes para o nome conector (apresentado acima). Se alguem achar o erro, por favor me avisem. Aline Manera
Então, estou também estou usando a versão do VMWare, mas não a nova implementação em C++, disponibilizada a pouco tempo.
Acho que é por isso então que não está dando certo aqui.
A respeito da minha aplicação, vc deu uma olhada no código que eu postei acima??!
Ainda não consegui encontrar o problema. Vou testá-la na nova implementação em C++, para ver se é isso o erro. Obrigada. Aline Manera