mirror of
https://github.com/wassname/cardsforscience.git
synced 2026-06-27 19:46:48 +08:00
345 lines
17 KiB
Plaintext
345 lines
17 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en" ng-app="cardsForScience">
|
|
<head>
|
|
<title>Cards For Science - Beta</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<meta property="og:title" content="Cards For Science">
|
|
<meta property="og:type" content="game">
|
|
<meta property="og:description" content="A card game where you work out the secret rule to determine which cards can be played next.">
|
|
<meta property="og:image" content="assets/favicon.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="57x57" href="assets/apple-icon-57x57.png">
|
|
<link rel="apple-touch-icon" sizes="60x60" href="assets/apple-icon-60x60.png">
|
|
<link rel="apple-touch-icon" sizes="72x72" href="assets/apple-icon-72x72.png">
|
|
<link rel="apple-touch-icon" sizes="76x76" href="assets/apple-icon-76x76.png">
|
|
<link rel="apple-touch-icon" sizes="114x114" href="assets/apple-icon-114x114.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" href="assets/apple-icon-120x120.png">
|
|
<link rel="apple-touch-icon" sizes="144x144" href="assets/apple-icon-144x144.png">
|
|
<link rel="apple-touch-icon" sizes="152x152" href="assets/apple-icon-152x152.png">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-icon-180x180.png">
|
|
<link rel="icon" type="image/png" sizes="192x192" href="assets/android-icon-192x192.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="96x96" href="assets/favicon-96x96.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="assets/favicon-16x16.png">
|
|
<meta name="msapplication-TileImage" content="ssets//ms-icon-144x144.png">
|
|
<meta name="msapplication-TileColor" content="#ffffff">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
|
|
|
|
</head>
|
|
<body>
|
|
<div style="display:none">A card game where you work out the secret rule to determine which cards can be played next.</div>
|
|
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand pc-icon" href="#" data-toggle="modal" data-target="#myModal"> Cards For Science</a>
|
|
</div>
|
|
<div class="collapse navbar-collapse" id="navbar-collapse">
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<!-- <li><a href="#" data-toggle="modal" data-target="#achievements-modal"><i class="fa fa-trophy"></i> Achievements</a></li>
|
|
<li><a href="#" data-toggle="modal" data-target="#stats-modal"><i class="fa fa-bar-chart"></i> Statistics</a></li> -->
|
|
|
|
<!-- <li class="dropdown" ng-controller="SaveController as sc"> -->
|
|
<!-- <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-floppy-o"></i> Saved: <span ng-cloak>{{ lastSaved | date : 'H:mm' }}</span> <span class="caret"></span></a> -->
|
|
<!-- <ul class="dropdown-menu" role="menu"> -->
|
|
<!-- <li><a href="#" ng-click="sc.saveNow()"><i class="fa fa-save"></i> Save now</a></li> -->
|
|
<!-- <li class="divider"></li> -->
|
|
<li ng-controller="SaveController as sc" ><a href="#" ng-click="sc.restart()"><i class="fa fa-refresh"></i> Restart</a></li>
|
|
<!-- </ul> -->
|
|
<!-- </li> -->
|
|
|
|
<li><a href="#" data-toggle="modal" data-target="#myModal"><i class="fa fa-users"></i> About</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div id="main-content" class="container-fluid Paired">
|
|
<div class="row">
|
|
<div class="col-md-3 col-md-3s col-lg-2 col-no-padding visible-md-block visible-lg-block">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<i class="fa fa-cogs"></i> Hand
|
|
</h4>
|
|
</div>
|
|
|
|
<div class="panel-body large" id="cardsLarge"
|
|
ng-controller="CardController as rc"
|
|
>
|
|
<div id="handContent">
|
|
<div class="row" ng-cloak>
|
|
|
|
<div class="col-xs-2 col-no-padding " ng-repeat="r in rc.cards|orderBy:'key'" ng-show="rc.isAvailable(r)">
|
|
<span ng-show="rc.isAvailable(r)"
|
|
id="{{r.key}}"
|
|
class="{{r.key}} card cards-store {{ r.state.interesting ? 'blink' : '' }} {{r.color}} {{rc.isAvailable(r) ? ' ui-draggable': 'empty'}}"
|
|
ng-click="rc.onClick(r,$event)"
|
|
data-cards="{{r.key}}"
|
|
data-drag="rc.isAvailable(r)"
|
|
jqyoui-draggable="rc.jqyouiDraggable"
|
|
data-jqyoui-options="rc.dataJqyouiOptions"
|
|
data-hashkey={{r.$$hashKey}}
|
|
>
|
|
{{r.key}}
|
|
</span>
|
|
<span class="{{rc.isAvailable(r) ? '': 'empty'}} {{r.state.amount > 1? 'white-badge': 'white-badge empty'}} ng-binding">{{r.state.amount}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div id="column-lab" class="col-xs-6 col-md-6 col-md-6s col-lg-7 col-no-padding-xs" ng-controller="StatsController as lc">
|
|
|
|
<div class="row status" ng-cloak>
|
|
<div class="col-xs-12 text-center col-no-padding-xs">
|
|
|
|
<div class="{{lc.lab.state.score<0?'bg-danger':''}} animate-increase animate-decrease" ><strong>Score</strong><br>{{ lc.lab.state.score | niceNumber }}</div>
|
|
<div class="update-value " ng-model="lc.lab.state.score" cfs-score-change id="update-data"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class=""><strong> Correct cards. Which card is next?</strong><br></div>
|
|
<div id="detector-holder">
|
|
|
|
<div id="detector" ng-controller="TableController as dc">
|
|
|
|
|
|
<div id="detector-cards-container"
|
|
ng-cloak
|
|
jqyoui-droppable="dc.jqyouiDroppable"
|
|
data-jqyoui-options="dc.dataJqyouiOptions"
|
|
data-drop="true"
|
|
>
|
|
<div class="main-line card-line" id="lastCards">
|
|
<div class="row" >
|
|
<div class="col-xs-1 col-no-padding add-from-top" ng-repeat="r in dc.lastCards | limitTo: -10" ng-cloak>
|
|
<span
|
|
class="{{r.key}} card {{r.color}}"
|
|
data-cards="{{r.key}}"
|
|
data-hashkey={{r.$$hashKey}}
|
|
>
|
|
{{r.key}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class=""><strong>Incorrect cards:</strong><br></div>
|
|
<div class="side-line card-line short-lines-nup" id="incorrectCards">
|
|
<div class="row">
|
|
<div class="col-md-1 col-no-padding" ng-repeat="rr in dc.incorrectCards | limitTo: -10" ng-cloak>
|
|
<div class="row">
|
|
<div ng-repeat="r in rr| limitTo: -7" class="col-md-12 col-no-padding add-from-right ">
|
|
<span
|
|
class="{{r.key}} card {{r.color}}"
|
|
data-cards="{{r.key}}"
|
|
data-hashkey={{r.$$hashKey}}
|
|
>
|
|
{{r.key}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" id="hints">
|
|
<div ng-click="dc.revealHint()" analytics-on="click" analytics-event="hint" class="col-md-12">
|
|
<div class="panel panel-default left-list card-panel">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">Hint</h3>
|
|
<div ng-cloak> (-{{dc.hintCost}} score)</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<ul>
|
|
<li ng-repeat="h in dc.hints" ng-cloak><i>{{h}}</i></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- <div id="rule" ng-click="dc.revealRule()" analytics-on="click" analytics-event="revealRule" class="col-md-6">
|
|
<div class="panel panel-default left-list card-panel">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">Rule</h3>
|
|
<div ng-cloak>(-{{dc.ruleCost}} score)</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<li ng-repeat="h in dc.ruleInfo" ng-cloak><i>{{h}}</i></li>
|
|
</div>
|
|
|
|
</div>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="col-md-3 col-md-3s col-lg-2 col-no-padding visible-md-block visible-lg-block">
|
|
<div class="panel panel-default hidden-xs hidden-sm">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<i class="fa fa-wrench"></i> Winning: guess which rule
|
|
</h4>
|
|
</div>
|
|
<div class="panel-body scrollable large" id="upgradesLarge">
|
|
<div id="upgradesContent" class="left-list" ng-controller="RulesController as uc">
|
|
|
|
<form class="hypotheses" ng-submit="uc.guess($event,uc.hypotheses[uc.guessedIndex])">
|
|
<div class="radio" ng-repeat="rule in uc.hypotheses">
|
|
<label class="{{uc.isGuessed(rule)}}" ng-cloak>
|
|
<input type="radio" ng-model="uc.guessedIndex" name="ruleRadios" id="ruleRadios-{{$index}}" value="{{$index}}" class="btn btn-sm btn-default">
|
|
</input>
|
|
{{rule.describe()}}
|
|
</label>
|
|
</div>
|
|
<button class="btn btn-sm btn-default" type="submit">Guess</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="column-tabs" class="col-xs-6 visible-xs-block visible-sm-block col-no-padding">
|
|
<ul id="TabList" class="nav nav-tabs" role="tablist">
|
|
<li class="active"><a href="#cards" role="tab" data-toggle="tab"><i class="fa fa-cogs"></i> Elements </a></li>
|
|
<li><a href="#hr" role="tab" data-toggle="tab"><i class="fa fa-users"></i> HR</a></li>
|
|
<li><a href="#upgrades" role="tab" data-toggle="tab"><i class="fa fa-wrench"></i> Upgrades</a></li>
|
|
</ul>
|
|
<div id="TabContent" class="tab-content">
|
|
<div class="tab-pane active scrollable" id="cards">
|
|
|
|
</div>
|
|
<div class="tab-pane scrollable" id="hr">
|
|
|
|
</div>
|
|
<div class="tab-pane scrollable" id="upgrades">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="infoBox" tabindex="-1" role="dialog" aria-labelledby="infoBoxLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="infoBoxLabel"></h4>
|
|
</div>
|
|
<div class="modal-body"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- <div class="modal fade" id="achievements-modal" tabindex="-1" role="dialog" aria-labelledby="achievements-label" aria-hidden="true" ng-controller="AchievementsController">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="achievements-label"><i class="fa fa-trophy"></i> Achievements</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p class="text-center"><strong>Progress</strong> <span class="label label-info">{{ progress() }} / {{ achievements.length }}</span></p>
|
|
<ul class="list-group">
|
|
<li class="list-group-item" ng-repeat="a in achievements | orderBy:'state.timeAchieved' | reverse" ng-show="a.isAchieved()">
|
|
<i class="fa {{ a.icon }}"></i>
|
|
{{ a.description }}
|
|
<span class="badge">{{ a.state.timeAchieved | niceTime }}</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
|
|
<div class="modal fade" id="win-modal" tabindex="-1" role="dialog" aria-labelledby="win-label" aria-hidden="true" ng-controller="RulesController">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="stats-label"><i class="fa fa-bar-chart"></i> Statistics</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<ul class="list-group">
|
|
<li class="list-group-item"><i class="fa fa-location-arrow"></i> : <strong>{{ lab.state.clicks | niceNumber }}</strong></li>
|
|
<li class="list-group-item"><i class="fa fa-database"></i> : <strong>{{ lab.state.dataSpent | niceNumber }}</strong> used / <strong>{{ lab.state.dataCollected | niceNumber }}</strong> collected</li>
|
|
<li class="list-group-item"><i class="fa fa-money"></i> : <strong>{{ lab.state.moneySpent | niceNumber }}</strong> spent / <strong>{{ lab.state.moneyCollected | niceNumber }}</strong> gathered</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- <div class="modal fade" id="stats-modal" tabindex="-1" role="dialog" aria-labelledby="stats-label" aria-hidden="true" ng-controller="StatsController">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="stats-label"><i class="fa fa-bar-chart"></i> Statistics</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<ul class="list-group">
|
|
<li class="list-group-item"><i class="fa fa-location-arrow"></i> : <strong>{{ lab.state.clicks | niceNumber }}</strong></li>
|
|
<li class="list-group-item"><i class="fa fa-database"></i> : <strong>{{ lab.state.dataSpent | niceNumber }}</strong> used / <strong>{{ lab.state.dataCollected | niceNumber }}</strong> collected</li>
|
|
<li class="list-group-item"><i class="fa fa-money"></i> : <strong>{{ lab.state.moneySpent | niceNumber }}</strong> spent / <strong>{{ lab.state.moneyCollected | niceNumber }}</strong> gathered</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
|
|
|
|
<div id="achievements-container" class="col-xs-6 col-sm-3"></div>
|
|
<div id="messages-container" class="col-xs-6 col-sm-3"></div>
|
|
|
|
<div id="mobile-orientation-container">
|
|
<div id="mobile-orientation-message">
|
|
You can only play Cards For Science on your mobile device in landscape orientation.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="myModalLabel">Cards For Science</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<h4>About</h4>
|
|
<p class="small">Version: 0.6</p>
|
|
|
|
<p class="small bg-warning">This is a pre-release. <p>Cards For Science is a card game where you work out the secret rule to determine which cards can be played. This game is based on <a href="http://www.logicmazes.com/games/eleusis/">Eleusis</a> by Robert Abbott and John Golden's <a href="http://www.logicmazes.com/games/eleusis/express.html">Eleusis</a> Express.
|
|
|
|
<h5>Authors</h5>
|
|
<ul>
|
|
<li><a href="https://github.com/wassname">wassname</a></li>
|
|
</ul>
|
|
<p>Feel free to get in touch with via GitHub or by sending a message on<br>cardsforscience at wassname.org</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|