WPF实现魔方小游戏
程序员文章站
2023-12-19 16:30:04
今天给大家带来的是一块用wpf 实现魔方的小游戏,先看一下效果图
代码如下,先写一个类,用来判断是否可以移动
using system;
using...
今天给大家带来的是一块用wpf 实现魔方的小游戏,先看一下效果图
代码如下,先写一个类,用来判断是否可以移动
using system; using system.collections.generic; using system.linq; using system.text; namespace _0705 { class classway { public classway(int num) { if (num < 9 || (num > 17 && num < 27) || num > 35) { if (num % 3 == 0) { ist1 = true; } if (num % 3 == 1) { ist2 = true; } if (num % 3 == 2) { ist3 = true; } } if (num > 8 && num < 36) { if (num < 12 || (num > 17 && num < 21) || (num > 26 && num < 30)) { isl1 = true; } else if ((num > 11 && num < 15) || (num > 20 && num < 24) || (num > 29 && num < 33)) { isl2 = true; } else { isl3 = true; } } } int num; public int num { get { return num; } set { num = value; } } bool ist1; public bool ist1 { get { return ist1; } set { ist1 = value; } } bool ist2; public bool ist2 { get { return ist2; } set { ist2 = value; } } bool ist3; public bool ist3 { get { return ist3; } set { ist3 = value; } } bool isl1; public bool isl1 { get { return isl1; } set { isl1 = value; } } bool isl2; public bool isl2 { get { return isl2; } set { isl2 = value; } } bool isl3; public bool isl3 { get { return isl3; } set { isl3 = value; } } } }
下面是主函数的代码
using system; using system.collections.generic; using system.linq; using system.text; using system.windows; using system.windows.controls; using system.windows.data; using system.windows.documents; using system.windows.input; using system.windows.media; using system.windows.media.imaging; using system.windows.navigation; using system.windows.shapes; namespace _0705 { /// <summary> /// mainwindow.xaml 的交互逻辑 /// </summary> public partial class mainwindow : window { random r = new random(); int[] num = new int[45]; classway[] cw = new classway[45]; image[] imgall = new image[45]; list<image> imgmmove = new list<image>(); public mainwindow() { initializecomponent(); this.width = systemparameters.fullprimaryscreenwidth; this.height = systemparameters.fullprimaryscreenheight; this.left = 0; this.top = 0; this.windowstyle = system.windows.windowstyle.none; this.allowstransparency = true; this.background = brushes.transparent; for (int i = 0; i < 45; i++) { num[i] = r.next(1, 6); int temp = 0; for (int j = 0; j < i; j++) { if (num[i] == num[j]) { temp++; if (temp == 9) { i--; break; } } } } for (int i = 0; i < 45; i++) { cw[i] = new classway(i); cw[i].num = num[i]; //image img = new image(); imgall[i] = new image(); imgall[i].tag = i; imgall[i].width = 50; imgall[i].height = 50; imgall[i].source = new bitmapimage(new uri("images/" + num[i] + ".png", urikind.relative)); back.children.add(imgall[i]); if (i < 9) { canvas.setleft(imgall[i], 480 + i % 3 * imgall[i].width); canvas.settop(imgall[i], 50 + i / 3 * imgall[i].height); } else if (i < 18) { canvas.setleft(imgall[i], 300 + (i - 9) % 3 * imgall[i].width); canvas.settop(imgall[i], 230 + (i - 9) / 3 * imgall[i].height); } else if (i < 27) { canvas.setleft(imgall[i], 480 + (i - 18) % 3 * imgall[i].width); canvas.settop(imgall[i], 230 + (i - 18) / 3 * imgall[i].height); } else if (i < 36) { canvas.setleft(imgall[i], 660 + (i - 27) % 3 * imgall[i].width); canvas.settop(imgall[i], 230 + (i - 27) / 3 * imgall[i].height); } else { canvas.setleft(imgall[i], 480 + (i - 36) % 3 * imgall[i].width); canvas.settop(imgall[i], 410 + (i - 36) / 3 * imgall[i].height); } } for (int i = 0; i < 12; i++) { button btn = new button(); if (i < 3 || i > 8) { btn.width = 50; btn.height = 30; if (i < 3) { btn.content = "上"; canvas.setleft(btn, 480 + i * btn.width); canvas.settop(btn, 200); } else { btn.content = "下"; canvas.setleft(btn, 480 + (i - 9) * btn.width); canvas.settop(btn, 380); } } else { btn.width = 30; btn.height = 50; if (i > 2 && i < 6) { btn.content = "左"; canvas.setleft(btn, 450); canvas.settop(btn, 230 + (i - 3) * btn.height); } else { btn.content = "右"; canvas.setleft(btn, 630); canvas.settop(btn, 230 + (i - 6) * btn.height); } } btn.tag = i; btn.click += new routedeventhandler(btn_click); back.children.add(btn); } } void btn_click(object sender, routedeventargs e) { imgmmove.clear(); button btn = (button)sender; switch (btn.tag.tostring()) { case "0": foreach (image img in imgall) { if (cw[(int)img.tag].ist1) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "1": foreach (image img in imgall) { if (cw[(int)img.tag].ist2) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "2": foreach (image img in imgall) { if (cw[(int)img.tag].ist3) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "3": foreach (image img in imgall) { if (cw[(int)img.tag].isl1) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "4": foreach (image img in imgall) { if (cw[(int)img.tag].isl2) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "5": foreach (image img in imgall) { if (cw[(int)img.tag].isl3) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); move(); break; case "6": foreach (image img in imgall) { if (cw[(int)img.tag].isl1) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; case "7": foreach (image img in imgall) { if (cw[(int)img.tag].isl2) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; case "8": foreach (image img in imgall) { if (cw[(int)img.tag].isl3) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; case "9": foreach (image img in imgall) { if (cw[(int)img.tag].ist1) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; case "10": foreach (image img in imgall) { if (cw[(int)img.tag].ist2) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; case "11": foreach (image img in imgall) { if (cw[(int)img.tag].ist3) { imgmmove.add(img); } } //messagebox.show(imgmmove.count.tostring()); imgmmove.reverse(); move(); break; } bool issucess = true; for (int i = 18; i < 26; i++) { if(cw[i].num!=cw[i+1].num) { issucess = false; break; } } if(issucess==true) { messagebox.show("成功"); } } private void move() { image imgtemp = new image(); imgtemp.source = imgmmove[0].source; int temp=cw[(int)imgmmove[0].tag].num; for (int i = 0; i < 8; i++) { imgmmove[i].source = imgmmove[i + 1].source; cw[(int)imgmmove[i].tag].num = cw[(int)imgmmove[i+1].tag].num; } imgmmove[8].source = imgtemp.source; cw[(int)imgmmove[8].tag].num = temp; } } }
下载地址:
希望大家会喜欢。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。