我正在尝试学习如何使用HTML canvas元素,当然,我正在制作一个绘图应用程序.所以,我已经为实际绘图设置了代码并为应用程序设置了动画部分,但我不知道如何获取鼠标光标的位置.我真的不想使用jQuery,因为我宁愿不想学习它所做的所有事情,也不得不经历设置它的过程.谢谢你的帮助!
我有自己的数据类型,表明:
data Commands = MoveLeft |
MoveRight |
MoveUp |
MoveDown |
IfVertical |
IfHorizontal |
InputChar |
InputInt |
OutputChar |
OutputInt |
OutputNewline |
PushInt Int |
Add |
Sub |
Mult |
Div |
Exp |
Pop |
Dup |
Switch |
Noop |
End
deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)
我有一个函数,我正试图从中提取数字PushInt
:
extractNum :: PushInt -> Int
extractNum (PushInt n) = n
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行它时,我收到一个错误说明:
Parser.hs:32:19:
Not in scope: type constructor or class `PushInt'
A data constructor of that name …
Run Code Online (Sandbox Code Playgroud) 好的,所以我真的无法想出这个.我定义了一个数组,playerPos,像这样:
int[] playerPos = new int[]{32, 32};
Run Code Online (Sandbox Code Playgroud)
第一个数字是x值,第二个是y值.但是,当我尝试使用它来定义一个矩形时,我在这里得到一个语法错误:
for (int x = 0 ; x < 64; x++) {
for (int y = 0 ; y < 64; y++) {
switch(map[x][y]) {
case 1:
mapRects[x][y] = new Rect(x - playerPos[0])*64, (y - playerPos[1])*64, ((x - playerPos[0])*64)+64, ((y - playerPos[1])*64)+64);
break;
case 2:
mapRects[x][y] = new Rect(x - playerPos[0])*64, ((y - playerPos[1])*64)-64, ((x - playerPos[0])*64)+64, ((y - playerPos[1])*64)+64);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
无论我在哪里说新的Rect(),它都会在所有逗号上说出语法错误
Syntax error on token ",", [ expected
Run Code Online (Sandbox Code Playgroud)
它说,最后一个数字 …
我在这里有一小段代码,我想在if语句中使用.代码是
getRandomInt :: (Int, Int) -> IO Int
getRandomInt (a, b) = do
g <- newStdGen
return . fst $ randomR (a, b) g
Run Code Online (Sandbox Code Playgroud)
然后再往下走......
if ((getRandomInt (0,1)) >>= (\x -> x == 1))
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这应该编译randomInt == 1
成if语句并在if语句中使用.代替; 我收到此错误:
word.hs:30:21:
Couldn't match expected type `Bool' with actual type `IO b0'
In the expression: ((getRandomInt (0, 1)) >>= (\ x -> x == 1))
In a stmt of a 'do' block:
if ((getRandomInt (0, 1)) >>= (\ x -> x …
Run Code Online (Sandbox Code Playgroud)