Affenpuzzle/Spiel

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" integrity="sha512-aOG0c6nPNzGk+5zjwyJaoRUgCdOrfSDhmMID2u4+OIslr0GjpLKo7Xm0Ao3xmpM4T8AmIouRkqwj1nrdVsLKEQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<style>
.card {
  position:absolute;
  width:128px;
  height:128px;
  border:1px solid black;
  background-image:url(https://programmingwiki.de/images/5/50/Admin_Hexenpuzzle.png);
  background-size: 310% 310%;
  box-shadow:2px 2px 8px rgba(0,0,0,0.2);
  flex-shrink:0;
  cursor:pointer;
}
.card0 {
  left:0;
  top:0;
  background-position: 0.5% 1%;
}
.card1 {
  left:128px;
  top:0;
  background-position: 49.5% 1%;
}
.card2 {
  left:256px;
  top:0;
  background-position: 98% 1%;
}

.card3 {
  background-position: 0.5% 49.5%;
  left:0;
  top:128px;
}
.card4 {
  background-position: 49.5% 49.5%;
  left:128px;
  top:128px;
}
.card5 {
  background-position: 98% 49.5%;
  left:256px;
  top:128px;
}

.card6 {
  background-position: 0.5% 98%;
  left:0;
  top:256px;
}
.card7 {
  background-position: 49.5% 98%;
  left:128px;
  top:256px;
}
.card8 {
  background-position: 98% 98%;
  left:256px;
  top:256px;
}
.card.dragging {
  box-shadow:4px 4px 10px rgba(0,0,0,0.5);
}
.card.rotate0 {
}
.card.rotate90 {
  transform:rotate(90deg);
}
.card.rotate180 {
  transform:rotate(180deg);
}
.card.rotate270 {
  transform:rotate(270deg);
}
.containerCards{
  position:relative;
  background:#f3f3f3;
  border:1px solid black;
  width:100%;
  height:500px;
  display:flex;
  flex-wrap:wrap;
}
</style>
<div class="containerCards">
<div class="card card0 rotate0"></div>
<div class="card card1 rotate0"></div>
<div class="card card2 rotate0"></div>
<div class="card card3 rotate0"></div>
<div class="card card4 rotate0"></div>
<div class="card card5 rotate0"></div>
<div class="card card6 rotate0"></div>
<div class="card card7 rotate0"></div>
<div class="card card8 rotate0"></div>
</div>

<script>
 function getAll(t,list){
   var p0 = t.position ? t.position : $(t).position();
   $('.card').each(function(i,e){
     if($(e).not(t))
     if(list.indexOf(e) == -1){
       var p1 = $(e).position();
       if(p1.left == p0.left) {
         if(p1.top == p0.top-128) list.push(e); 
         if(p1.top == p0.top+128) list.push(e); 
       } 
       if(p1.top == p2.top) {
         if(p1.left == p0.left-128) list.push(e); 
         if(p1.left == p0.left+128) list.push(e); 
       } 
       getAll($(e),list);
     }
   });
   return list;
 }
 $('.card').draggable({ containment: "parent", grid: [ 32, 32 ], 
  start: function() { $(this).addClass("dragging");},
  stop: function() { $(this).removeClass("dragging");},
  drag: function(e, ui) {
    getAll(ui,[]).css({'top': ui.helper.css('top'),'left': ui.helper.css('left')});
  }
 });
 $('.card').on('mousedown', function(event) { 
    $('.card').css('z-index','1');
    $( this ).css('z-index','1000');
 });
 $('.card').on('click', function(event) { 
    if($(this).hasClass("dragging")) return;
    if($(this).hasClass("rotate0")) 
      $(this).removeClass("rotate0").addClass("rotate90"); 
    else
    if($(this).hasClass("rotate90")) 
      $(this).removeClass("rotate90").addClass("rotate180"); 
    else
    if($(this).hasClass("rotate180")) 
      $(this).removeClass("rotate180").addClass("rotate270"); 
    else
    if($(this).hasClass("rotate270")) 
      $(this).removeClass("rotate270").addClass("rotate0"); 
 });
</script>
</html>