課題専用のプレイグラウンドを使用して、
300px * 300pxのcanvasに自由に絵を書いてください。
条件:
- アニメーションが含まれること
- 条件分岐(if文)が使われていること
- クリック(タップ)でインタラクションできること
- 再実行しなくても、繰り返し操作しつづけられること
- 画像を使用する場合は権利クリアなこと
- 画像の取得元URLが記述されていること
(自作画像の場合は自作と記述)
1限用プレイグラウンド
2限用プレイグラウンド
C限用プレイグラウンド
基本的なJavaScriptの書き方は下記を別途参照してください。
プログラミングチートシート沢山の値を連続で入れられる箱
var arr = [10, 20, 30, 40, 50] arr[0] // 1番目の値にアクセス => 10 arr[1] // 2番目の値にアクセス => 20 arr[2] // 3番目の値にアクセス => 30
沢山の値にラベルをつけてセットで入れられる箱
var obj = {
apple: 'りんご',
orange: 'オレンジ'
}
console.log(obj.apple) // => 'りんご'
console.log(obj.orange) // => 'オレンジ'
for(var i = 0; i < 30; ++i) {
if( i === 15) {
ctx.fillStyle = 'rgb(250,50,50)'
} else {
ctx.fillStyle = 'black'
}
ctx.fillRect(10 * i, 10 , 5, 5)
}
var i = 0;
function loop () {
console.log(++i)
}
setInterval(loop, 100)
var obj = {x: 150, y: 150, speed: 3, size: 10}
function strokeCircle(x,y,radius) {
ctx.beginPath()
ctx.arc(x, y, radius, 0, 2 * Math.PI)
ctx.stroke()
}
function loop() {
// 下地を白で塗りつぶす
ctx.fillStyle = 'white'
ctx.fillRect(0, 0, 300, 300)
strokeCircle(obj.x, obj.y, obj.size)
obj.size += obj.speed
if(obj.size > 100) {
obj.size = 100
obj.speed *= -1
} else if(obj.size <= 0) {
obj.size = 0
obj.speed *= -1
}
}
setInterval(loop, 30)
function onClick(e) {
console.log('x: ' + e.offsetX)
console.log('y: ' + e.offsetY)
}
canvas.addEventListener('click', onClick)
- assetsタブを選択
- ファイルを選択から画像をアップロード
- 使用したい画像下のコピーボタンでパスをコピーできます
- 画像パスには、画像アップロード時にコピーしたパスを貼り付けてください
ctx.drawImage(images.asset1, 10, 10, 50,50)
canvasの右半分をクリックで右移動、左半分をクリックで左移動
看板に当たったらゲームオーバー
画像をダウンロードして、 playgroundにアップロードしてください
var width = 50
var pos = 2
var objectX = 2
var objectY = -150
var status = 'playing'
function loop () {
ctx.fillStyle = 'green'
ctx.fillRect(0,0,300,300)
ctx.fillStyle = 'gray'
ctx.fillRect(50,0,200,300)
ctx.drawImage(images.asset2, width * objectX, objectY,width,50)
ctx.drawImage(images.asset1, width * pos, 200, width, 70)
if(status === 'playing') {
if(objectY > 300) {
objectY = -150
objectX = Math.floor(Math.random() * 6)
}
objectY += 5
}
if(170 <= objectY && objectY <= 270) {
if(objectX === pos) {
ctx.fillStyle = 'red'
ctx.font = '24px sans-serif';
ctx.fillText('gameover', 90,100)
status = 'gameover'
}
}
}
setInterval(loop, 30)
function onClick(e) {
if(status === 'playing') {
if(e.offsetX < 150) {
--pos
}else {
++pos
}
} else if(status === 'gameover') {
status = 'playing'
objectY = -150
objectX = Math.floor(Math.random() * 6)
}
}
canvas.addEventListener('click', onClick)