Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)Dim x1 As Integer, y1 As Integerx1 = Fix((x - x0) / a): y1 = Fix((y - y0) / a)If (x - x0) >((Col_Num + 1) * a) Or (y - y0) >((Col_Num + 1) * a) Then Exit SubIf x <x0 Or y <y0 Then Exit SubIf x <x0 + x1 * a + 2 Or _x >x0 + x1 * a + a - 4 Or _y <y0 + y1 * a + 2 Or _y >y0 + y1 * a + a - 4 _Then Exit SubIf Button = 1 ThenIf Map(x1, y1) = 0 ThenCall fan(x1, y1)ElseIf Map(x1, y1) = 1 ThenCall loseEnd IfElseIf Button = 2 ThenCall draw_flg(x1, y1)End IfDim n As Integern = 0Dim i As Integer, j As IntegerFor i = 0 To Col_NumFor j = 0 To Row_NumIf Map(i, j) = -2 Then n = n + 1Next jNext iIf n = (Col_Num + 1) * (Row_Num + 1) - Ant_Num ThenBeepCurrentX = (Col_Num / 2) * a + x0CurrentY = (Row_Num / 2) * a + y0Call sub1a = Form1.FontSizeForm1.FontSize = 80'Form1.ForeColor = vbBlackPrint "you win"Form1.FontSize = aEnd IfEnd Sub
Sub fan(x As Integer, y As Integer)Dim i As Integer, j As IntegerDim n As IntegerFor i = -1 To 1For j = -1 To 1If j * i = 0 And Map(x + i, y + j) = 0 ThenMap(x + i, y + j) = -2n = Counts(x + i, y + j)Form1.Line (x0 + (i + x) * a + 2, y0 + (j + y) * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BF
If n <>0 ThenCurrentX = (x + i) * a + 2 + x0CurrentY = (y + j) * a + 2 + y0Select Case nCase Is = 1Form1.ForeColor = vbWhiteCase Is = 2Form1.ForeColor = vbYellowCase Is >2Form1.ForeColor = vbRedEnd SelectPrint nElseIf n = 0 Then
Call fan(x + i, y + j)End IfEnd IfNext jNext iEnd Sub
Function Counts(x As Integer, y As Integer) As IntegerDim i As Integer, j As IntegerFor i = -1 To 1For j = -1 To 1If Map(x + i, y + j) = 1 Then Counts = Counts + 1NextNextEnd FunctionSub lose()Dim i As Integer, j As IntegerFor i = 0 To Row_NumFor j = 0 To Col_NumIf Map(j, i) = 1 ThenForm1.FillColor = vbBlackForm1.FillStyle = 0Form1.Circle (x0 + j * a + a / 2, y0 + i * a + a / 2), a / 3, vbBlack, , , 0.8Form1.Line (x0 + j * a, y0 + i * a)-Step(a, a), vbWhiteForm1.Line (x0 + j * a + a, y0 + i * a)-Step(-a, a), vbWhite
ElseIf Map(j, i) = 0 ThenForm1.Line (x0 + j * a + 2, y0 + i * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BFCurrentX = j * a + x0CurrentY = i * a + y0Print Counts(j, i)End IfNext j
Next iBeepa = Form1.FontSizeForm1.FontSize = 80'Form1.ForeColor = vbBlackPrint "you lose"Form1.FontSize = aEnd SubSub draw_flg(x As Integer, y As Integer)CurrentX = x * a + x0 + 2CurrentY = y * a + y0 + 2Print "?"End Sub
Public Sub Init_Form()
Form1.ClsForm1.ScaleMode = 3Form1.Width = 8000Form1.Height = 6000Form1.BackColor = vbGreenForm1.AutoRedraw = Trueform1.caption="一个简单扫雷游戏 "Col_Num = 10 '获取列数Row_Num = 10 '获取行数a = 20 '单元宽(高)度Ant_Num = 40 '雷的数量ReDim Map(-1 To Col_Num + 1, -1 To Row_Num + 1)Dim i As Integer, j As IntegerFor i = -1 To Row_Num + 1
For j = -1 To Col_Num + 1Form1.Line (x0 + j * a, y0 + i * a)-Step(a, a), 0, BForm1.Line (x0 + j * a + 2, y0 + i * a + 2)-Step(a - 4, a - 4), vbRed, BFMap(j, i) = 0 '初始化位置标记为空格0If i = -1 Or i = Row_Num + 1 Or j = -1 Or j = Row_Num + 1 ThenForm1.Line (x0 + j * a + 1, y0 + i * a + 1)-Step(a - 2, a - 2), RGB(100, 120, 100), BF '画四周墙体Map(j, i) = -1 '四周位置标记为墙体:-1End IfNext j
Next iDim x As Integer, y As IntegerFor i = 1 To Ant_Num1000Randomizex = Rnd * Col_Numy = Rnd * Row_NumDoEventsIf Map(x, y) <>0 Then GoTo 1000Map(x, y) = 1NextEnd Sub
Sub sub1()
Dim i As Integer, j As IntegerFor i = 0 To Row_NumFor j = 0 To Col_NumIf Map(j, i) = 1 ThenForm1.FillColor = vbBlackForm1.FillStyle = 0Form1.Circle (x0 + j * a + a / 2, y0 + i * a + a / 2), a / 3, vbBlack, , , 0.8ElseIf Map(j, i) = 0 ThenForm1.Line (x0 + j * a + 2, y0 + i * a + 2)-Step(a - 4, a - 4), Form1.BackColor, BFCurrentX = j * a + x0CurrentY = i * a + y0Print Counts(j, i)End IfNext j
Next iEnd Sub
俄罗斯方快http://topic.csdn.net/t/20051201/01/4429905.html扫雷
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
struct list
{
int x
int y
int num
int bomb
int wa
}
struct list di[10][10]
int currentx=210
int currenty=130
void initxy(void)
{
int i,j
for(i=0i<=9i++)
for(j=0j<=9j++)
{
di[j].x=i*20+200
di[j].y=j*20+120
di[j].wa=0
di[j].bomb=0
}
}
void initmu(void)
{
int i,j
setcolor(2)
rectangle(200,120,400,320)
rectangle(190,110,410,330)
setfillstyle(8,14)
floodfill(191,111,2)
for(i=0i<=9i++)
for(j=0j<=9j++)
rectangle(di[j].x,di[j].y,di[j].x+19,di[j].y+19)
outtextxy(450,200,"press 'enter' to kick")
outtextxy(450,250,"press '\' to mark")
}
void randbomb(void)
{
int k
int i,j
randomize()
for(i=0i<=9i++)
for(j=0j<=9j++)
{
k=random(5)
if(k==2)
di[j].bomb=1
}
}
void jisuan(void)
{
int k=0
int i,j
for(i=0i<=9i++)
for(j=0j<=9j++)
{
if(i&&j&&di[i-1][j-1].bomb)
k=k+1
if(i&&di[i-1][j].bomb)
k=k+1
if(j&&di[j-1].bomb)
k=k+1
if(i<=8&&di[i+1][j].bomb)
k=k+1
if(j<=8&&di[j+1].bomb)
k=k+1
if(i<=8&&j<=8&&di[i+1][j+1].bomb)
k=k+1
if(i&&j<=8&&di[i-1][j+1].bomb)
k=k+1
if(i<=8&&j&&di[i+1][j-1].bomb)
k=k+1
di[j].num=k
k=0
}
}
void xianbomb(void)
{
int i,j
char biaoji[2]
char znum[2]
biaoji[0]=1
biaoji[1]=NULL
for(i=0i<=9i++)
for(j=0j<=9j++)
{
if(di[j].bomb==1)
outtextxy(di[j].x+2,di[j].y+2,biaoji)
else
{
itoa(di[j].num,znum,10)
setfillstyle(1,0)
bar(i*20+202,j*20+122,i*20+218,j*20+138)
outtextxy(i*20+202,j*20+122,znum)
}
}
}
void move(void)
{
int key
key=bioskey(1)
if(key)
key=bioskey(0)
if(key==0x4800)
{
if(currenty>130)
{
setcolor(0)
circle(currentx,currenty,5)
currenty-=20
setcolor(4)
circle(currentx,currenty,5)
}
else
{
setcolor(0)
circle(currentx,currenty,5)
currenty=310
setcolor(4)
circle(currentx,currenty,5)
}
}
if(key==0x4b00)
{
if(currentx>210)
{
setcolor(0)
circle(currentx,currenty,5)
currentx-=20
setcolor(4)
circle(currentx,currenty,5)
}
else
{
setcolor(0)
circle(currentx,currenty,5)
currentx=390
setcolor(4)
circle(currentx,currenty,5)
}
}
if(key==0x4d00)
{
if(currentx<390)
{
setcolor(0)
circle(currentx,currenty,5)
currentx+=20
setcolor(4)
circle(currentx,currenty,5)
}
else
{
setcolor(0)
circle(currentx,currenty,5)
currentx=210
setcolor(4)
circle(currentx,currenty,5)
}
}
if(key==0x5000)
{
if(currenty<310)
{
setcolor(0)
circle(currentx,currenty,5)
currenty+=20
setcolor(4)
circle(currentx,currenty,5)
}
else
{
setcolor(0)
circle(currentx,currenty,5)
currenty=130
setcolor(4)
circle(currentx,currenty,5)
}
}
if(key==0x1c0d)
{
int i,j
char snum[2]
snum[0]=NULL
snum[1]=NULL
i=(currentx-210)/20
j=(currenty-130)/20
if(di[j].bomb==1)
{
outtextxy(100,100,"game over")
xianbomb()
sleep(2)
exit(0)
}
if(di[j].bomb==0)
{
di[j].wa=1
setfillstyle(1,0)
bar(currentx-8,currenty-8,currentx+8,currenty+8)
setcolor(15)
itoa(di[j].num,snum,10)
outtextxy(currentx-8,currenty-8,snum)
setcolor(4)
circle(currentx,currenty,5)
}
}
if(key==0x2b5c)
{
char biaoji[2]
biaoji[0]=1
biaoji[1]=NULL
setcolor(0)
bar(currentx-8,currenty-8,currentx+8,currenty+8)
setcolor(4)
outtextxy(currentx-8,currenty-8,biaoji)
circle(currentx,currenty,5)
}
}
void success(void)
{
int k=1
int i,j
for(i=0i<=9i++)
for(j=0j<=9j++)
if(di[j].bomb==0&&di[j].wa==0)
k=0
if(k==1)
{
outtextxy(100,100,"success good")
xianbomb()
sleep(2)
exit(0)
}
}
void main(void)
{
int gd=DETECT,gm
initgraph(&gd,&gm,"")
initxy()
initmu()
randbomb()
jisuan()
setcolor(4)
circle(210,130,5)
while(1)
{
move()
success()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)