连连看(C#版)——部分代码1
来源:互联网 发布:thewolf软件平台 编辑:程序博客网 时间:2024/04/26 05:41
//随机分布图片 int index = 0; int count = 180; int[] iArr = new int[180]; Image jl = dic[0]; Random rand = new Random(unchecked((int)DateTime.Now.Ticks)); //在地图不同的位置分布不同图片 for (int i=0; i<180; i++) { iArr[i] = i; } for (int i=0; i<180; i++,count--) {index = rand.Next()%count; SImage[iArr[index]].X = 40 + iArr[index] % 18 * 40; SImage[iArr[index]].Y = 25 + iArr[index] / 18 * 50;if (i%2 == 0){ if (uiPace == 1) {//第一次图片30张不同 SImage[iArr[index]].ImageNum = dic[rand.Next() % 30+1]; } else {//以后的关数40张不同 SImage[iArr[index]].ImageNum = dic[rand.Next() % 40+1]; } jl = SImage[iArr[index]].ImageNum;}else { SImage[iArr[index]].ImageNum = jl;}//已经放置图片的位置移动到最后 iArr[index] = iArr[count - 1]; } iResidualImage = 180;//变化图片,在没有可连接图片的时候 private void Displacement() { //最后一个单位用于交换元素 SImageMess[] SArrImage = new SImageMess[181]; int j = 0; for (int i = 0; i < 180; i++) //把还有显示图片的读进数组 { if (SImage[i].ImageNum != dic[0]) { SArrImage[j++].ImageNum = SImage[i].ImageNum; } } if (j == 0) { return; } Random rand = new Random(unchecked((int)DateTime.Now.Ticks)); int n; int m; for (int i = 0; i < 30; i++) //随机(30次)选俩个然后交换起位置 { n = rand.Next() % j ; m = rand.Next() % j ; SArrImage[180].ImageNum = SArrImage[n].ImageNum; SArrImage[n].ImageNum = SArrImage[m].ImageNum; SArrImage[m].ImageNum = SArrImage[180].ImageNum; } j = 0; for (int i = 0; i < 180; i++) //打乱后还原到原数据中 { if (SImage[i].ImageNum != dic[0]) { SImage[i].ImageNum = SArrImage[j++].ImageNum; } } this.Invalidate(); }