blob: fb65fa35c56c70880689e9c1e0d26eba082bc26c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<Item id="field" width="370" height="480">
<properties>
<Property name="clickx" type="Int" value="0"/>
<Property name="clicky" type="Int" value="0"/>
</properties>
<resources>
<Component id="tile">
<Flipable id="flipable" width="40" height="40">
<axis>
<Axis startX="20" startY="20" endX="20" endY="0" />
</axis>
<front>
<Image source="pics/front.png" width="40" height="40">
<Image anchors.horizontalCenter="{parent.horizontalCenter}"
anchors.verticalCenter="{parent.verticalCenter}"
source="pics/flag.png" opacity="{modelData.hasFlag}">
<opacity>
<Behaviour>
<NumericAnimation property="opacity" duration="250"/>
</Behaviour>
</opacity>
</Image>
</Image>
</front>
<back>
<Image source="pics/back.png" width="40" height="40">
<Text anchors.horizontalCenter="{parent.horizontalCenter}" anchors.verticalCenter="{parent.verticalCenter}"
text="{modelData.hint}" color="white" font.bold="true"
opacity="{modelData.hasMine == false && modelData.hint > 0}"/>
<Image anchors.horizontalCenter="{parent.horizontalCenter}" anchors.verticalCenter="{parent.verticalCenter}"
source="pics/bomb.png" opacity="{modelData.hasMine}"/>
<Explosion anchors.horizontalCenter="{parent.horizontalCenter}" anchors.verticalCenter="{parent.verticalCenter}" explode="{modelData.hasMine==true && modelData.flipped==true}"/>
</Image>
</back>
<states>
<State name="back" when="{modelData.flipped == true}">
<SetProperty target="{flipable}" property="rotation" value="180" />
</State>
</states>
<transitions>
<Transition>
<SequentialAnimation>
<PauseAnimation duration="{var ret = Math.abs(flipable.parent.x-field.clickx) + Math.abs(flipable.parent.y-field.clicky); if (ret > 0) {if(modelData.hasMine==true && modelData.flipped==true){ret*3;}else{ret;}} else {0}}"/>
<NumericAnimation easing="easeInOutQuad" properties="rotation"/>
</SequentialAnimation>
</Transition>
</transitions>
<MouseRegion anchors.fill="{parent}"
onClicked="field.clickx = flipable.parent.x; field.clicky = flipable.parent.y; row = Math.floor(index/9); col = index - (Math.floor(index/9) * 9); if(mouse.button==undefined || mouse.button==Qt.RightButton){flag(row,col);}else{flip(row,col);}" />
</Flipable>
</Component>
</resources>
<Image source="pics/No-Ones-Laughing-3.jpg" tile="true"/>
<Description text="Use the 'minehunt' executable to run this demo!" width="300" opacity="{tiles?0:1}" anchors.horizontalCenter="{parent.horizontalCenter}" anchors.verticalCenter="{parent.verticalCenter}"/>
<Repeater dataSource="{tiles}" x="1" y="1">
<Component>
<ComponentInstance component="{tile}"
x="{(index - (Math.floor(index/9) * 9)) * 41}"
y="{Math.floor(index/9) * 41}"/>
</Component>
</Repeater>
<Item id="gamedata" width="370" height="100" y="380">
<Text color="white" font.size="18" x="20" y="20">In play:</Text>
<Image x="100" y="20" source="pics/bomb-color.png"/>
<Text x="100" y="60" color="white" text="{numMines}"/>
<Image x="140" y="20" source="pics/flag-color.png"/>
<Text x="140" y="60" color="white" text="{numFlags}"/>
<Image x="240" y="0" source="{if(isPlaying==true){'pics/smile.png'}else{if(hasWon==true){'pics/glee.png'}else{'pics/frown.png'}}}">
<MouseRegion anchors.fill="{parent}" onClicked="reset()"/>
</Image>
</Item>
</Item>
|