第十三课 开炮打靶子 教案
一、教学目标:
1.掌握逻辑运算符“and”的使用方法。
2.继续熟悉Shapes对象的几个常用操作的使用方法。
3.继续编写事件驱动的程序。
4.继续熟悉流程图的画法,根据流程图编写程序。
二、教学重点、难点
本课的教学重点是掌握逻辑运算符“and”的使用方法。难点是如何用条件语句表示小球打中靶子了?
三、教学过程:
1、首先编写一个点击鼠标“开炮”的程序,用小球表示炮弹。这是一个事件驱动的程序。下面是流程图:
2、设计开炮的程序:
ball=shapes.AddEllipse(16,16)
GraphicsWindow.MouseDown=onkd
Sub onkd
? xball=GraphicsWindow.MouseX
? yball=GraphicsWindow.y
? For i=y ball To 0 Step -0.5
? ? Shapes.Move(ball,xball,i)
endfor
endsub
3、命中靶子的判断
ball=shapes.AddEllipse(16,16)
target=shapes.AddRectangle(200,10)
x=0
y=100
x1=1
GraphicsWindow.MouseDown=onkd
While ("true")
? If x<0 Or x>(GraphicsWindow.Width)-200 Then
? ? x1=-x1
? Else ?
? ? Shapes.Move(target,x,y) ?
? EndIf
? x=x+x1
? Program.Delay(3)
EndWhile
Sub onkd
? xball=GraphicsWindow.MouseX
? yball=GraphicsWindow.Height
? For i=yball To 0 Step -0.5
? ? Shapes.Move(ball,xball,i)
? ? xtarget=Shapes.GetLeft(target)
? ? If?i>=y And i<=y+10 And xball>xtarget and xball? ? ? GraphicsWindow.ShowMessage ("打中了 !","你真棒!")
? ? ? i=0
? ? EndIf?
? EndFor
EndSub
??
4、小球和靶子相遇表示命中靶子了,小球与靶子相遇,必须同时满足四个条件:
(1)小球的y坐标(i)大于等于靶子上边界的y坐标(i>=y);
(2)小球的y坐标(i)小于等于靶子下边界的y坐标(i<=y+10);
(3)小球的x坐标大于靶子左边界的x坐标(xball>xtarget);
? ? ? ?小球的x坐标小于靶子右边界的x坐标(xball? ? ? 判断上面四个关系表达式是否都成立,就是判断表达式:i>=y?And?i<=y+10?And?xball>xtarget?And?xball?
5、做一个拍小球的程序。?
修改小球在地面弹跳的程序,点击鼠标为拍小球,当小球往下运动时,拍 小球会使小球越拍越高,当小球往上运动时,拍小球会使小球越拍越低。 程序如下:?
GraphicsWindow.MouseDown=onMD?
ball=Shapes.AddEllipse(20,20)?
x=200?
y=100?
s=0?
While "true"?
s=s+1?
y=y+s?
If y>=(GraphicsWindow.Height-20) Then?
s=-s
EndIf?
Shapes.Move(ball,x,y)?
Program.Delay(50)?
EndWhile?
Sub onMD?
s=s+5?
EndSub