JavaScript拼图小游戏
来源:互联网 发布:宠物蝎子淘宝 编辑:程序博客网 时间:2024/05/13 20:28
<html><head> <style type="text/css">.haha {border-width: 2;font-size: 50;font-weight: bold;color: white;text-align: center;color: white;background-color: black;} </style></head><h4 id='de'></h4><script>var xsize = 3, ysize = 3;var size = xsize * ysize;var a = new Array(size);var spaceX, spaceY;newGame(xsize, ysize);function newGame() {size = xsize * ysize;a = new Array(size);clear();shuffle();init();draw();}onkeydown = keyDown;function print(s) {document.getElementById('de').innerHTML = s;}function clear() {for (var i = 0; i < size - 1; i++)a[i] = i + 1;a[size - 1] = 0;spaceX = xsize - 1;spaceY = ysize - 1;}function shuffle() {for (var i = 0; i < 100; i++) {var x, y;do {x = Math.floor(Math.random() * (size - 1));y = Math.floor(Math.random() * (size - 1));} while (x == y);var temp = a[x];a[x] = a[y];a[y] = temp;}}function keyDown(e) {var x = spaceX, y = spaceY;switch (e.keyCode) {case 37:y++;break;case 38:x++;break;case 39:y--;break;case 40:x--;break;}if (x >= 0 && y >= 0 && x < xsize && y < ysize) {var temp = a[x * ysize + y];a[x * ysize + y] = a[spaceX * ysize + spaceY];a[spaceX * ysize + spaceY] = temp;spaceX = x;spaceY = y;draw();if (over()) {confirm('you win!');clear();shuffle();draw();}}}function over() {for (var i = 0; i < size - 1; i++) {if (a[i] != i + 1)return false;}return true;}function draw() {for (var i = 0; i < size; i++) {var img = document.getElementById('pic' + i);img.innerHTML = (a[i] == 0 ? "" : a[i]);}}function cout(s) {document.write(s);}function init() {var w = screen.availWidth / xsize;var h = (screen.availHeight - 100) / ysize; w=h=Math.min(w,h);cout("<table align='center'>");for (var i = 0; i < xsize; i++) {cout("<tr>");for (var j = 0; j < ysize; j++) {cout("<td width=" + Math.floor(w) + " height=" + Math.floor(h)+ " class='haha' id=pic" + (i * ysize + j) + "></td>");}cout("</tr>");}cout("</table>");}</script><html>
C#版:需要创建几张外部图片
using System;using System.Windows.Forms;using System.Drawing;using System.Media;class form : Form{ int[,] a = new int[8, 2]; int x, y;//空格所在的位置 Random r = new Random(); static void Main() { Application.Run(new form()); } form() { Text = "智能拼图 made by weidiao.neu"; ClientSize = new Size(200, 800); MaximumSize = Size; FormBorderStyle = FormBorderStyle.None; Paint += draw; KeyUp += key; init(); } void key(object o, KeyEventArgs e) { int p=-1, q=-1; switch (e.KeyCode) { case Keys.Up: p = x+1; q = y; break; case Keys.Down: p = x-1; q = y ; break; case Keys.Left: p = x; q = y+1; break; case Keys.Right: p = x ; q = y-1; break; } if (!valid(p, q)) return; new SoundPlayer("move.wav").Play(); swap(ref a[x, y], ref a[p, q]); x = p; y = q; draw(null,null); if (over()) win(); } bool over() { int i, j; for (i = 0; i < 8; i++) for (j = 0; j < 2; j++) if (a[i, j] != (i * 2 + j+1)%16) return false; return true; } void win() { new SoundPlayer("win.wav").Play(); DialogResult o = MessageBox.Show("您赢了,好牛逼的样子.", "就是吊", MessageBoxButtons.RetryCancel); if (o == DialogResult.Retry) { init(); draw(null, null); } else Application.Exit(); } void draw(object o, EventArgs e) { int w = ClientSize.Width/2; int h = ClientSize.Height/8; Bitmap bit = new Bitmap(ClientSize.Width, ClientSize.Height); Graphics.FromImage(bit).Clear(Color.AliceBlue); int i,j; for (i = 0; i < 8; i++) for (j = 0; j < 2; j++) Graphics.FromImage(bit).DrawImage(Image.FromFile(a[i, j].ToString() + ".bmp"), new Rectangle(new Point(j * w,i * h), new Size(w - 1, h - 1))); CreateGraphics().DrawImage(bit,0,0); } void init() { x = 7; y = 1; int i, j; for (i = 0; i < 8; i++) for (j = 0; j < 2; j++) a[i,j] = i * 2 + j+1; a[7, 1] = 0; shuffle0(); //shuffle1(); } bool valid(int x,int y) { return x >= 0 && y >= 0 && x < 8 && y < 2; } void swap(ref int m, ref int n) { int i = m; m = n; n = i; } //shuffle0用于洗牌,也能保证有解 //这是一种巧妙的算法,只要保证交换偶数次就一定有解 //只要交换奇数次,就一定无解. //交换时不允许动空格 void shuffle0() { int i; int p, q; for (i = 0; i < 800; i++) { p = r.Next() % 15; q = r.Next()% 15; if (p == q) { i--; continue; } swap(ref a[p / 2, p % 2], ref a[q / 2, q % 2]); } } //shuffle1也用于洗牌,能保证绝对有解 void shuffle1() { int i; int p=-1, q=-1; for (i = 0; i < 500; i++) { switch (r.Next()%4) { case 0: p = x + 1; q = y; break; case 1: p = x - 1; q = y; break; case 2: p = x; q = y + 1; break; case 3: p = x; q = y - 1; break; } if (!valid(p, q)) continue ; swap(ref a[x, y], ref a[p, q]); x = p; y = q; } }}
0 0
- JavaScript拼图小游戏
- 拼图小游戏
- 拼图小游戏
- javascript原生小练习(三)--拼图小游戏
- java拼图小游戏
- JS数字拼图小游戏
- swift 拼图小游戏
- android 美女拼图小游戏
- iOS之拼图小游戏
- VS,C#--拼图小游戏
- java智力拼图小游戏
- 美女拼图小游戏
- Android—拼图小游戏
- Android移动拼图小游戏
- android-拼图小游戏
- Android 小游戏 :撸啊撸拼图
- java拼图小游戏
- Android-拼图小游戏
- Linux文件管理
- 电路分析学习感想
- HDU 1202 The cacluation of GPA
- openjudge 简单的整数划分问题
- IBM Install Manger 下载链接
- JavaScript拼图小游戏
- HDU 2537 8球胜
- JavaScript数独求解器
- 安卓震动器实例----Vibrator
- 5.继承
- 利用...来字符检测(swift)
- Fiddler网络数据抓包
- Forfiles命令删除指定天数以前的文件或文件夹
- js书籍推荐