1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Photo Mosaics - Фото Головоломка

Discussion in 'Моды - Mods' started by Prado, Jul 19, 2010.

  1. Prado Thread starter Challenge Everything


    Offline
    • Admin
    Message Count:
    3,191
    Likes Received:
    786
    My version of phpFox:
    3.0.0
    [IMG]

    Этот мод создает Головоломку из фотографий в альбомах... Помню раньше мы в такие играли на приставках к телевизору, а сейчас на телефоне у каждого есть :joyful:

    :smile: Плюс к развлечениям.

    Установка:

    Открываем open album_file.tpl и находим:

    Code:
    {* DISPLAY FILE/IMAGE *}
    ******{$file_src}
    </div>
    После Добавляем:

    Code:
    <div style='font-weight: bold; margin-left: auto; margin-right: auto;' id="messageDiv"></div>
    <div style='font-weight: bold; margin-left: auto; margin-right: auto;'>
    ****{literal} <a href="#" onclick="scramble();return false">Remix</a> | <a href="#" onclick="javascript:initPuzzle();return false">Puzzle</a> |
    <form style="display:inline">
    Columns/Rows: <input type="text" value="4" onblur="var no = this.value.replace(/[^d]/g,'');if(no/1<3){ this.value = '3';no=3; };cols=no" maxlength="1" size="2"> x
    <input type="text" value="3" onblur="var no = this.value.replace(/[^d]/g,'');if(no/1<2){ this.value = '2';no=2; };rows=no" maxlength="1" size="2"></form>
    
    
    
    <style type="text/css">
    ****#media_photo_div .square{
    ********overflow:hidden;
    ********border-left:1px solid #FFF;
    ********border-top:1px solid #FFF;
    ********position:absolute;
    ****}
    
    ****.activeImageIndicator{
    ********border:1px solid #FF0000;
    ********position:absolute;
    ********z-index:10000;
    ****}
    ****.revealedImage{
    ********position:absolute;
    ********left:0px;
    ********opacity:0;
    ********filter:alpha(opacity=50);
    ********top:0px;
    ********z-index:50000;
    ****}
    ****</style>
    ****
    ****
    ****<script type="text/javascript">
    ************
    ****var puzzleImages = ['{/literal}{$media_path}{literal}'];****// Array of images to choose from
    ****var rows = 3;
    ****var cols = 4;
    ********
    ****var imageArray = new Array();
    ****var imageInUse = false;
    ****var puzzleContainer;
    ****var activeImageIndicator = false;
    ****var activeSquare = false;**** // Reference to active puzzle square
    ****var squareArray = new Array(); // Array with references to all the squares
    
    ****
    ****var emptySquare_x;
    ****var emptySquare_y;
    ****
    ****var colWidth;
    ****var rowHeight;
    ****
    ****var gameInProgress = false;
    ****
    ****var revealedImage = false;
    ****
    ****for(var no=0;no<puzzleImages.length;no++){
    ********imageArray[no] = new Image();
    ********imageArray[no].src = puzzleImages[no];****
    ****}
    ****
    ****function initPuzzle()
    ****{
    ********gameInProgress = false;
    ********var tmpInUse = imageInUse;
    ********imageInUse = imageArray[Math.floor(Math.random() * puzzleImages.length)];
    ********if(imageInUse==tmpInUse && puzzleImages.length>1)
    ************initPuzzle();
    ********else{
    ************puzzleContainer = document.getElementById('media_photo_div');
    ************getImageWidth();
    ********}
    ****}
    ****
    ****function getImageWidth()
    ****{
    ********if(imageInUse.width>0){
    ************startPuzzle();****
    ********}else{
    ************setTimeout('getImageWidth()',100);****
    ********}
    ****}
    ****
    ****function scramble()
    ****{
    ********gameInProgress = true;
    ********var currentRow = cols-1;
    ********var currentCol = rows-1;
    ********
    ********document.getElementById('revealedImage').style.display='none';
    ********
    ********for(var no=0;no<rows;no++){
    ************for(var no2=0;no2<cols;no2++){
    ****************if(no<rows.length || no2<cols.length){
    ********************var el = document.getElementById('square_' + no2 + '_' + no);
    ********************if(el){
    ************************el.style.left = (no2 * colWidth) + (no2) + 'px';
    ************************el.style.top = (no * rowHeight) + (no) + 'px';****
    ********************}else{
    ************************initPuzzle();
    ************************return;
    ********************}
    ****************}************
    ************}
    ********}********
    ********
    ********
    ********var lastPos=false;
    ********var countMoves = 0;
    ********while(countMoves<(50*cols*rows)){
    ************var dir = Math.floor(Math.random()*4);
    ************var readyToMove = false;
    ************if(dir==0 && currentRow>0 && lastPos!=1){****// Moving peice down
    ****************currentRow = currentRow-1;****
    ****************readyToMove = true;
    ************}****************
    ************if(dir==1 && currentRow<(rows-1) && lastPos!=0){****// Moving peice up
    ****************currentRow = currentRow+1;
    ****************readyToMove = true;
    ************}****
    ************if(dir==2 && currentCol>0 && lastPos!=3){**** // Moving peice right
    ****************currentCol = currentCol -1;
    ****************readyToMove = true;
    ************}****
    ************if(dir==3 && currentCol<(cols-1) && lastPos!=2){**** // Moving peice right
    ****************currentCol = currentCol + 1;
    ****************readyToMove = true;
    ************}
    ************if(readyToMove){
    ****************activeSquare = document.getElementById('square_' + currentCol + '_' + currentRow);
    ****************moveImage(false,true);****
    ****************lastPos = dir;
    ****************countMoves++;
    ************}
    ********}
    ********
    ********return;
    ****}
    ****
    ****function gameFinished()
    ****{
    ********var string = "";
    
    ********var squareWidth = colWidth + 1;
    ********var squareHeight = rowHeight + 1;********
    ********var squareCounter = 0;
    ********var errorsFound = false;
    ********var correctSquares = 0;
    ********for(var prop in squareArray){
    ************var currentCol = squareCounter % cols;
    ************var currentRow = Math.floor(squareCounter/cols);
    ************var correctLeft = currentCol * squareWidth;
    ************var correctTop = currentRow * squareHeight;
    ************if(squareArray[prop].style.left.replace('px','') != correctLeft || squareArray[prop].style.top.replace('px','') != correctTop){
    ****************//return;************
    ************}else{
    ****************correctSquares++;
    ************}
    ****************
    ************squareCounter++;****
    ********}****
    ********
    ********if(correctSquares == ((cols * rows) -1)){
    ************document.getElementById('messageDiv').innerHTML = '<h2>Fantastic! You did it !!</h2>';
    ************gameInProgress = false;
    ************revealImage();
    ************
    ********}else{
    ************document.getElementById('messageDiv').innerHTML = 'Currently, you have ' + correctSquares + ' out of ' + ((cols * rows) -1) + ' pieces placed correctly';
    ********}
    ********
    ****}
    ****
    ****var currentOpacity = 0;
    ****function revealImage()
    ****{
    ********if(currentOpacity==100)currentOpacity=0;
    ********var obj = document.getElementById('revealedImage');
    ********obj.style.display = 'block';
    ********currentOpacity = currentOpacity +2;
    ********if(document.all){
    ************obj.style.filter = 'alpha(opacity='+currentOpacity+')';
    ********}else{
    ************obj.style.opacity = currentOpacity/100;
    ********}
    ********
    ********if(currentOpacity<100)setTimeout('revealImage()',10);
    ********
    ****}
    ****function displayActiveImage()
    ****{
    ********if(!gameInProgress)return;
    ********if(!activeImageIndicator){
    ************activeImageIndicator = document.createElement('DIV');
    ************activeImageIndicator.className = 'activeImageIndicator';
    ************puzzleContainer.appendChild(activeImageIndicator);
    ************activeImageIndicator.onclick = moveImage;
    ************
    ********}
    ********activeImageIndicator.style.display='block';
    ********activeImageIndicator.style.left = this.offsetLeft +**'px';
    ********activeImageIndicator.style.top = this.offsetTop + 'px';
    ********activeImageIndicator.style.width = this.style.width;
    ********activeImageIndicator.style.height = this.style.height;
    ********activeImageIndicator.innerHTML = '<span></span>';
    ********activeSquare = this;
    ****}
    ****
    ****function moveImage(e,fromShuffleFunction)
    ****{
    ********if(!activeSquare)return;
    ********if(!gameInProgress && !fromShuffleFunction){
    ************alert('You have to shuffle the cards first');
    ************return;
    ********}
    ********var currentLeft = activeSquare.style.left.replace('px','') /1;
    ********var currentTop = activeSquare.style.top.replace('px','') /1;
    ********
    ********var diffLeft = Math.round((currentLeft - emptySquare_x) / colWidth);
    ********var diffTop = Math.round((currentTop - emptySquare_y) / rowHeight);****
    ********
    ********if(((diffLeft==-1 || diffLeft==1) && diffTop==0) || ((diffTop==-1 || diffTop==1) && diffLeft==0)){****// Moving right
    ************activeSquare.style.left = emptySquare_x + 'px';
    ************activeSquare.style.top = emptySquare_y + 'px';
    ************emptySquare_x = currentLeft;
    ************emptySquare_y = currentTop;****
    ************activeSquare = false;****
    ************if(activeImageIndicator)activeImageIndicator.style.display = 'none';
    ************if(!fromShuffleFunction)gameFinished();****
    ********}
    ****}
    ****
    ****function startPuzzle()
    ****{
    ********puzzleContainer.innerHTML = '';
    
    
    ********var subDivs = puzzleContainer.getElementsByTagName('DIV');
    ********for(var no=0;no<subDivs.length;no++){
    ************subDivs[no].parentNode.removeChild(subDivs[no]);
    ********}
    ********activeImageIndicator = false;
    ********squareArray.length = 0;
    
    ********
    ********if(document.getElementById('revealedImage')){
    ************var obj = document.getElementById('revealedImage');
    ************obj.parentNode.removeChild(obj);
    ********}
    ********var revealedImage = document.createElement('DIV');
    ********revealedImage.style.display='none';
    ********revealedImage.id='revealedImage';;
    ********revealedImage.className='revealedImage';;
    ********var img = document.createElement('IMG');
    ********img.src = imageInUse.src;
    ********revealedImage.appendChild(img);
    ********puzzleContainer.appendChild(revealedImage);
    ************
    ********colWidth = Math.round(imageInUse.width / cols)-1;
    ********rowHeight = Math.round(imageInUse.height / rows)-1;
    
    ********puzzleContainer.style.width = colWidth * cols + (cols * 1) + 'px';
    ********puzzleContainer.style.height = rowHeight * rows + (rows * 1) + 'px';
    ********
    ********if(navigator.appVersion.indexOf('5.')>=0 && navigator.userAgent.indexOf('MSIE')>=0){
    ************puzzleContainer.style.width = colWidth * cols + (cols * 1) + 20 + 'px';
    ************puzzleContainer.style.height = rowHeight * rows + (rows * 1) + 20 + 'px';************
    ************
    ********}
    ****************
    ********if(!revealedImage){
    ************revealedImage = document.createElement('DIV');
    ************revealedImage.style.display='none';****
    ************revealedImage.innerHTML = '';
    ************
    ********}
    ********for(var no=0;no<rows;no++){
    ************for(var no2=0;no2<cols;no2++){
    ****************if(no2==cols-1 && no==rows-1){
    ********************emptySquare_x = (no2 * colWidth) + (no2);****
    ********************emptySquare_y = (no * rowHeight) + (no);****
    ********************break;
    ****************}
    ****************var newDiv = document.createElement('DIV');
    ****************newDiv.id = 'square_' + no2 + '_' + no;
    ****************newDiv.onmouseover = displayActiveImage;
    ****************newDiv.onclick = moveImage;
    ****************newDiv.className = 'square';
    ****************newDiv.style.width = colWidth + 'px';
    ****************newDiv.style.height = rowHeight + 'px';****
    ****************newDiv.style.left = (no2 * colWidth) + (no2) + 'px';
    
    ****************newDiv.style.top = (no * rowHeight) + (no) + 'px';
    ****************newDiv.setAttribute('initPosition',(no2 * colWidth) + (no2) + '_' + (no * rowHeight) + (no));
    ****************var img = new Image();
    ****************img.src = imageInUse.src;
    ****************img.style.position = 'absolute';
    ****************img.style.left = 0 - (no2 * colWidth) + 'px';
    ****************img.style.top = 0 - (no * rowHeight) + 'px';
    ****************newDiv.appendChild(img);****************
    ****************puzzleContainer.appendChild(newDiv);
    ****************squareArray.push(newDiv);
    ************}
    ********}****
    ********
    ********
    ****}
    ********
    ****</script>
    
    {/literal}
    ****</div>
    Готово :wink:

Share This Page

All rights reserved SocEngine.ru ©