怎样在htmljs中完成随机出现一组图片拼图

怎样在htmljs中完成随机出现一组图片拼图,第1张

 <!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <style>

        div div {

            width: 30px

            height: 30px

            display: inline-block

            border: 1px solid black

            background-repeat: no-repeat

            background-size: 300% 300%

        }

        #img1 {

            background-position: top left

        }

        #img2 {

            background-position: top

        }

        #img3 {

            background-position: top right

        }

        #img4 {

            background-position: center left

        }

        #img5 {

            background-position: center

        }

        #img6 {

            background-position: center right

        }

        #img7 {

            background-position: bottom left

        }

        #img8 {

            background-position: bottom

        }

        #img9 {

            background-position: bottom right

        }

    </style>

</head>

<body>

    <div>

        <div id="img1"></div>

        <div id="img2"></div>

        <div id="img3"></div>

    </div>

    <div>

        <div id="img4"></div>

        <div id="img5"></div>

        <div id="img6"></div>

    </div>

    <div>

        <div id="img7"></div>

        <div id="img8"></div>

        <div id="img9"></div>

    </div>

    <button>next</button>

</body>

<script>

    let arr = ["http://iconfont.alicdn.com/t/1522400286994.jpg@100h_100w.jpg", "http://iconfont.alicdn.com/t/1510710350863.png@100h_100w.jpg", "http://iconfont.alicdn.com/t/1553563063102.jpg@100h_100w.jpg"]

    let num = 0

    let imgFun = () => {

        document.querySelectorAll("div div").forEach(item => {

            item.style.backgroundImage = 'url(' + arr[num] + ')'

        })

    }

    imgFun()

    document.querySelector("button").onclick = () => {

        if (num < arr.length - 1) {

            num++

        } else {

            num = 0

        }

        imgFun()

    }

</script>

</html>

 请采纳

可以用css+jQuery来做,当然html5现在已经具有了拖动的功能,你也可以去了解一下,这个是案例:http://www.w3school.com.cn/tiy/t.asp?f=html5_draganddrop

如果用老方法完成,就要用到mousedown,onmousemove及mouseup三个事件,当触发当前元素的mousedown事件时,你给当前元素设置层级关系为最高并且允许拖动!

数字版“拼图”游戏C源代码:

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<windows.h>

int i, j, r, k    //i、j、r用于循环, k存放随机数值

int m, n    // m、n是当前空位的下标, t标记排序是否成功

int a[4][4]   //存储4×4共16个数字数组

void show(void)    //输出数组表格

void csh(void)   //初始化界面

int  yes(void)     //判断排序是否成功

void up(void)      //数字向上移动到空位(空位则下移)

void down(void)  //数字向下移

void left(void)   //数字向左移

void rght(void)  //数字向右移

void inkey(void)   //按键 *** 作

void gtxy(int x, int y) //控制光标移动的函数

int main(void)

{ while(1)

{csh( )

      while(1)

        { inkey()

         show()

         if ( yes( ) )

            {gtxy(6,12)printf("你成功了! 再来一局y/n?")break}

      }

    if(getch( )== ʹnʹ)break

    }

return 0

}

void csh(void)

{ r=0

CONSOLE_CURSOR_INFO cursor_info={1,0}  //以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info)

for(i=0i<4i++)   //给数组a依序赋值

for(j=0j<4j++)

{ if (i==3 &&j==3) a[i][j]=0

else  a[i][j]=1+r++

}

a[3][3]=a[1][1]a[1][1]=0 //把a[3][3]与a[1][1]的值交换一下

m=1n=1

srand((unsigned)time(0))  //初始化随机数发生器

for(r=0r<500r++)    //将数组各值打乱

{ k=rand( )%(4)     //取0-3随机数,分别代表上下左右四个方向

switch(k)

{ case 0: { up( ) break}

case 1: {down( ) break}

case 2: { left( ) break}

case 3: { rght( )break}

}

}

printf("\n\n\t\t   数字拼图")

printf("\n\t┌──────┬──────┬──────┬──────┐")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t└──────┴──────┴──────┴──────┘")

show( )

}

void show(void)

{for(i=0i<4i++)

for(j=0j<4j++)  //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

{gtxy(7*j+9,2*i+4)if(a[i][j]==0)printf("      │")

else if(a[i][j]>9)printf("  %d  │",a[i][j])

else printf("   %d  │",a[i][j])

}

}

void inkey(void)

{ int key

key=getch( )

switch(key)

{ case 72: { up( )break }

case 80: {down( )break}

case 75: {left( )break}

case 77: { rght( ) break }

}

}

void up(void)

{ if (m!=3)        //移动时要考虑空位"0"是否已经在边界

{ a[m][n]=a[m+1][n] m++a[m][n]=0}

}

void down(void)

{ if (m!=0)

{a[m][n]=a[m-1][n] m--a[m][n]=0}

}

void left(void)

{ if (n!=3)

{ a[m][n]=a[m][n+1]n++a[m][n]=0 }

}

void rght(void)

{ if (n!=0)

{ a[m][n]=a[m][n-1]n--a[m][n]=0}

}

int yes(void)

{ r=0

for(i=0i<4i++)

for(j=0j<4j++)

{ if (a[i][j]!=1+r++) return (r==16)?1:0}

}

void gtxy(int x, int y)  //控制光标移动的函数

{ COORD coord

coord.X = x

coord.Y = y

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7083138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存