Browse Source

🎉 Hello world (finally)!

main
Clement 2 months ago
commit
69b6cafb28
29 changed files with 12441 additions and 0 deletions
  1. +3
    -0
      .gitignore
  2. +87
    -0
      assets/css/css3buttons.css
  3. +14
    -0
      assets/css/editor.css
  4. +4
    -0
      assets/css/index.css
  5. BIN
     
  6. BIN
     
  7. BIN
     
  8. +71
    -0
      assets/js/editor.js
  9. +11631
    -0
      assets/js/jquery-ui.min.js
  10. +1
    -0
      assets/js/jquery.color.js
  11. +154
    -0
      assets/js/jquery.min.js
  12. +317
    -0
      assets/js/load.js
  13. BIN
     
  14. BIN
     
  15. BIN
     
  16. BIN
     
  17. BIN
     
  18. BIN
     
  19. BIN
     
  20. BIN
     
  21. BIN
     
  22. BIN
     
  23. +0
    -0
     
  24. +31
    -0
      editor.html
  25. +30
    -0
      index.php
  26. +9
    -0
      level1.js
  27. +10
    -0
      level2.js
  28. +29
    -0
      list/index.php
  29. +50
    -0
      save.php

+ 3
- 0
.gitignore View File

@@ -0,0 +1,3 @@
.idea
/custom/*
!/custom/.gitkeep

+ 87
- 0
assets/css/css3buttons.css
File diff suppressed because it is too large
View File


+ 14
- 0
assets/css/editor.css View File

@@ -0,0 +1,14 @@
*{margin:0;padding:0;font-family:arial, 'sans-serif';}
fieldset{line-height:6px}
fieldset br{clear:both;}
.case{display:none;width:10px;height:10px;}
.labelcase{width:10px;height:10px;/*margin:-4px 0;*/margin:0;padding:0;background:#000;display:block;line-height:10px;font-size:7px;border:1px solid #AAA;float:left;}
.labelSelected{background-color:#FFF;}
.start{background:green;}
.end{background:blue;}
.flagover{background-color:yellow;}
a{margin-top:10px;}
nav{width:300px; margin:10px auto 0;}
h3{margin:10px 0;}
ol li{padding-left:18px;background:url(../img/bullet_blue.png) center left no-repeat;}

+ 4
- 0
assets/css/index.css View File

@@ -0,0 +1,4 @@
*{margin:0;padding:0;font-family:arial, 'sans-serif'; font-size:.9em;}
#board{width:300px;height:300px; margin:0 auto;background-color:#FFF;}
/*#start{display:block;}*/
nav{width:300px; margin:10px auto 0;}

BIN
View File


BIN
View File


BIN
View File


+ 71
- 0
assets/js/editor.js View File

@@ -0,0 +1,71 @@
function genereCheckbox(l,h){
var checkbox = '';
for(j=0; j<h; j++){
for(k=0; k<l; k++)
checkbox += '<input type="checkbox" class="case" name="check'+j+'-'+k+'" id="check'+j+'-'+k+'"/><label for="check'+j+'-'+k+'" class="labelcase">&nbsp;</label>';
checkbox += '<br/>';
}
return checkbox;
}
$(document).ready(function(){
var droppableOpts = {
hoverClass: "flagover",
drop: function( event, ui ) {
var drag = ui.draggable;
if(drag.attr('id') == 'start'){
if($(this).hasClass('end')){
alert('Warning : you can\'t have the same starting and ending point');
}else{
$('label').removeClass('start');
$(this).addClass("start");
$('#startingPoint').val($(this).attr('for'));
}
}else if(drag.attr('id') == 'end'){
if($(this).hasClass('start')){
alert('Warning : you can\'t have the same starting and ending point');
}else{
$('label').removeClass('end');
$(this).addClass("end");
$('#endingPoint').val($(this).attr('for'));
}
}
}
};
var options = '';
for(i=5; i<=50; i++) options = options + '<option value="'+i+'">'+i+'</option>';
$('select').html(options);
$('fieldset').html(genereCheckbox(5,5));
$('select').change(function(){
$('fieldset').html(genereCheckbox($('#largeur').val(),$('#hauteur').val()));
});
$('.case').live('change',function(){
if($(this).is(":checked")){
$('label[for="'+$(this).attr('id')+'"]').addClass("labelSelected").droppable(droppableOpts);
}else{
$('label[for="'+$(this).attr('id')+'"]').removeClass("labelSelected").droppable('destroy');
}
});
function check(w){
var hasIt = false;
$('label').each(function(){
if($(this).hasClass(w)){
console.log('has it :D');
hasIt = true;
}
});
return hasIt;
}
$("#start, #end").draggable({revert: "invalid"});
$(".labelSelected").droppable(droppableOpts);
$('#save').click(function(){
if(!check('start') || !check('end')){
alert('We need a starting and a ending point');
return false;
}
$('form').eq(0).submit();
});
});

+ 11631
- 0
assets/js/jquery-ui.min.js
File diff suppressed because it is too large
View File


+ 1
- 0
assets/js/jquery.color.js
File diff suppressed because it is too large
View File


+ 154
- 0
assets/js/jquery.min.js
File diff suppressed because it is too large
View File


+ 317
- 0
assets/js/load.js
File diff suppressed because it is too large
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


BIN
View File


+ 0
- 0
View File


+ 31
- 0
editor.html View File

@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="assets/css/editor.css" />
<link rel="stylesheet" type="text/css" href="assets/css/css3buttons.css" />
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery-ui.min.js"></script>
<script src="assets/js/editor.js"></script>
</head>
<body>
<nav>
<a href="editor.html" title="Play" class="left pill button">Play</a><a href="list/" title="Custom laby list" class="right pill button">Custom laby list</a>
</nav>
<form action="save.php" method="POST">
<label for="largeur">Width : </label><select name="largeur" id="largeur"></select>
<label for="hauteur">Height : </label><select name="hauteur" id="hauteur"></select>
Start : <img src="assets/img/flag_green.png" id="start" /> | End : <img src="assets/img/flag_blue.png" id="end" />
<fieldset></fieldset>
<input type="hidden" id="startingPoint" name="startingPoint" value="" />
<input type="hidden" id="endingPoint" name="endingPoint" value="" />
<a href="#" id="save" class="positive primary button">Save</a>
</form>
<h3>How to edit your level</h3>
<ol>
<li>Choose the size of your labyrinth</li>
<li>Click on squares to build your labyrinth (don't forget that you can't go diagonally)</li>
<li>Drag'n drop both flags on one of the white square to indicate a start and ending point</li>
<li>Save it!</li>
</ol>
</body>
</html>

+ 30
- 0
index.php View File

@@ -0,0 +1,30 @@
<?php
$file = isset($_GET['level']) ? $_GET['level'] : null;
$custom = 'false';
$niveau = '1';
if ($file !== null && file_exists(__DIR__ .'/custom/'.$file.'.js')){
$custom = 'true';
$niveau = $file;
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="assets/css/index.css" />
<link rel="stylesheet" type="text/css" href="assets/css/css3buttons.css" />
<style>
#board{width:300px;height:300px; margin:200px auto;background-color:#FFF;}
#start{display:block;}
</style>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.color.js"></script>
<script>
let niveau = <?=$niveau?>;
let custom = <?=$custom?>;
</script>
<script src="assets/js/load.js"></script>
</head>
<body>
<noscript>javascript must be activated to play this game.</noscript>
</body>
</html>

+ 9
- 0
level1.js View File

@@ -0,0 +1,9 @@
currentPosition = [2,4]; // x - y
finalPosition = [1,0];
level = [
[0,1,0,0,0], // 0
[0,1,1,1,0], // 1
[0,0,0,1,0], // 2
[0,0,1,1,0], // 3
[0,0,1,0,0], // 4
];

+ 10
- 0
level2.js View File

@@ -0,0 +1,10 @@
currentPosition = [1,1];
finalPosition = [7,3];
level = [
[0,0,0,0,0,0,0,0,0,0,0],
[0,1,1,1,1,1,1,1,1,1,0],
[0,0,0,1,0,1,0,1,0,1,0],
[0,0,0,1,0,1,0,1,0,1,0],
[0,0,0,0,0,0,0,0,0,0,0],
];

+ 29
- 0
list/index.php View File

@@ -0,0 +1,29 @@
<?php
session_start();
$currentFile = !empty($_SESSION['file']) ? $_SESSION['file'] : null;
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="index.css" />
<style>
#board{width:300px;height:300px; margin:200px auto;}
#start{display:block;}
.current{background-color:yellow;}
</style>
</head>
<body>
<div id="board">
<?php
$folder =new DirectoryIterator('../custom/');
foreach($folder as $file){
if(!$file->isDir()){
echo '<a href="http://labs.shikiryu.com/experimental-games/2/?level='.substr($file->getFileName(), 0, -3).'" title="laby '.substr($file->getFileName(), 0, -3).'"';
if($currentFile !== null && $currentFile == $file->getFileName()) echo ' class="current"';
echo '>laby '.substr($file->getFileName(), 0, -3).'</a><br/>';
}
}
?></div>
</body>
</html>

+ 50
- 0
save.php View File

@@ -0,0 +1,50 @@
<?php
session_start();
$startingPoint = $_POST['startingPoint'];
$endingPoint = $_POST['endingPoint'];
$largeur = (int)$_POST['largeur'];
$hauteur = (int)$_POST['hauteur'];
$cases = array();
foreach($_POST as $n=>$v){
if(!in_array($n, array('startingPoint','endingPoint','largeur','hauteur'))){
$coord = getCoordForCase($n);
$cases[$coord[0]][$coord[1]] = 1;
}
}
function getCoordForPt($t){
if (preg_match('/^check(\d{1,2})-(\d{1,2})$/', $t, $m) !== 0) {
return '[' . $m[2] . ',' . $m[1] . ']';
}
return null;
}
function getCoordForCase($t){
if (preg_match('/^check(\d{1,2})-(\d{1,2})$/', $t, $m) !== 0) {
return [$m[1], $m[2]];
}
return null;
}
$level = '[';
for($i=0; $i<$hauteur; $i++){
$level .= '[';
for($j=0; $j<$largeur; $j++){
if(!empty($cases[$i][$j])) {
$level .= '1,';
} else {
$level .= '0,';
}
}
$level = substr($level, 0, -1).'],';
}
$level = substr($level, 0, -1).'];';
$file = '';
$file .= 'currentPosition = '.getCoordForPt($startingPoint).';';
$file .= 'finalPosition ='.getCoordForPt($endingPoint).';';
$file .= 'level = '.$level;
$tod = gettimeofday();
$finalFilename = $tod['sec'].mt_rand(0,50).'.js';
file_put_contents(__DIR__ .'/custom/'.$finalFilename, $file);
$_SESSION['file'] = $finalFilename;
header('Location: list/');

Loading…
Cancel
Save