1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>猜数</title>
6 </head>
7 <body>
8
9 <canvas id="box" width="500" height="300"></canvas>
10 <form>
11 <input type="text" id="guessValue" placeholder="port Canvas Image">
12 <button id="createImageData">猜猜看?!</button>
13 </form>
14 <script>
15 var guesses = 0;
16 var message = "Guess the letter from a(lower) to Z(higher)";
17 var letters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
18 var today = new Date();
19 var letterToGuess = '';
20 var higherOrLower='';
21 var letterGuessed;
22 var gameOver = false;
23
24 function initGame() {
25 var letterIndex = Math.floor(Math.random() * letters.length);
26 letterToGuess = letters[letterIndex];
27 guess = 0;
28 letterGuessed = [];
29 gameOver = false;
30 window.addEventListener("keydown", eventKeyPressed, true);
31 drawScreen();
32 var formElement = document.querySelector("#createImageData");
33 formElement.addEventListener("click",createImageDataPressed,false);
34 }
35
36 function eventKeyPressed(e){
37 if(!gameOver) {
38 var letterPressed = String.fromCharCode(e.keyCode);
39 letterPressed = letterPressed.toLowerCase();
40 guesses++;
41 letterGuessed.push(letterPressed);
42 if (letterPressed == letterToGuess) {
43 gameOver = true;
44 } else {
45 letterIndex = letters.indexOf(letterToGuess);
46 guessIndex = letters.indexOf(letterPressed);
47 console.log(guessIndex);
48 if (guessIndex < 0) {
49 higherOrLower = "That is not a letter!"
50 } else if (guessIndex > letterIndex) {
51 higherOrLower = "Lower";
52 } else {
53 higherOrLower = "higher";
54 }
55 }
56 drawScreen();
57 }
58 }
59 var canvas = document.querySelector("#box");
60 var ctx = canvas.getContext("2d");
61 function drawScreen(){
62 //背景
63 ctx.fillStyle = "#ffffaa";
64 ctx.fillRect(0,0,500,300);
65 //边框
66 ctx.strokeStyle = "#000000";
67 ctx.strokeRect(5,5,490,290);
68 ctx.textBaseline = "top";
69 //日期
70 ctx.fillStyle = "#000000";
71 ctx.font = "10px Sans-Serif";
72 ctx.fillText(today,150,10);
73 //消息
74 ctx.fillStyle = "#ff0000";
75 ctx.font = "14px Sans-serif";
76 ctx.fillText(message,125,30);
77
78 //猜的次数
79 ctx.fillStyle = "#109910";
80 ctx.font = "16px Sans-serif";
81 ctx.fillText("guess: "+guesses+"次!",215,50);
82 //显示higher或lower
83 ctx.fillStyle = "#000";
84 ctx.font = "16px Sans-Serif";
85 ctx.fillText("Higher or Lower: "+higherOrLower,150,125);
86 //猜过的字母
87 ctx.fillStyle = "#ff0000";
88 ctx.font = "16px Sans-Serif";
89 ctx.fillText("Letters Guessed: "+letterGuessed.toString(),10,260);
90 if(gameOver){
91 ctx.fillStyle = "#ff0000";
92 ctx.font = "40px _sans-serif";
93 ctx.fillText("You got it!",150,180);
94 }
95 }
96 function createImageDataPressed(e){
97 window.open(canvas.toDataURL(),"canvasImage","left=0,top=0,width="+canvas.width +",height="+canvas.height +",toolbar=0,resizeable=0");
98 }
99 initGame();
100 </script>
101 </body>
102 </html>