{"id":47174,"student_id":70,"content":"import game\n\n# 1. 别让战机这么靠前吧,好危险呀!\nfighter.y = 440\nskill_count = 3\nskill_loading_time = 0\n\ncanvas_width = 1200\ncanvas_height = 900\n\ndef update():\n \n global skill_count\n global skill_loading_time\n \n skill_loading_time -= 1\n \n # 2. 名字很重要,取个酷炫一点的名字吧!\n game.print(\"Koding 战斗机\", 20, 20, \"gold\")\n \n if fighter.life \u003c 2:\n game.print(\"生命值:\"+str(fighter.life), 20, 40, \"red\" )\n else:\n game.print(\"生命值:\"+str(fighter.life), 20, 40, \"white\" )\n \n if skill_count==0:\n game.print(\"技能数:\"+str(skill_count), 20, 60, \"red\")\n else:\n game.print(\"技能数:\"+str(skill_count), 20, 60, \"white\")\n \n \n # 3. 只能前进的战机是活不长的,快让他动起来吧!\n if game.key.up==True:\n fighter.y = fighter.y - 4\n if game.key.down==True:\n # 如何让战机后退呢?\n fighter.y = fighter.y + 4\n if game.key.right==True:\n # 如何让战机右移呢?\n fighter.x += 4\n if game.key.left==True:\n # 如何让战机左移呢?\n fighter.x -= 4\n if game.key.space == True:\n fighter_shoot()\n \n if game.key.c == True:\n if skill_loading_time\u003c0 and skill_count\u003e0:\n angle = 0\n while angle\u003c360:\n fighter_shoot( angle )\n angle += 10\n skill_count -= 1\n skill_loading_time = 50\n \n if fighter.x \u003c 0: \n fighter.x = 0 \n if fighter.x \u003e canvas_width: \n fighter.x = canvas_width \n if fighter.y \u003c 0: \n fighter.y = 0 \n if fighter.y \u003e canvas_height: \n fighter.y = canvas_height\n\ngame.forever(update)\n\n##=== 挑战题:\n## 1. 为战机的名字换一个特别的颜色吧!\n## 2. 更改一下战机的速度,让他飞得更快或更慢一点!\n\n","created_at":"2018-10-29T22:20:18.326+08:00","updated_at":"2020-07-08T18:59:01.835+08:00","name":"太空大战 (学生版) 副本","language":"python","screenshot":{"url":"https://cdn2.koding.school/uploads/project/screenshot/47174/f27e27186107b63011a7076af49d9c9e.jpg"},"parent_id":46418,"plugin":"import game\nimport math\nimport random\nimport time\n\n_time = time\nSTART_AT = _time.time()\n\n_timer = 0\n_explode_at = START_AT\ngame.setBackdrop(\"bg.jpg\",0,0,1200,900)\ngame.sound.play('Arcade-Fantasy.mp3',True)\nfighter = game.createSprite([\"fighter_1.png\",\"fighter_2.png\",\"fighter_damaged.png\"])\nfighter.scale = 0.6\nfighter.y = 200\nfighter.layer = 999\nfighter._last_shot_at = 0\nfighter.life = 3\nfighter.damage_countdown = 0\n\nenemies = []\nlights = []\nbullets = []\n\ncanvas_width = 1200\ncanvas_height = 900\n\ndef clear_dead_enemies_and_bullets():\n global enemies, bullets\n enemies = [e for e in enemies if e._deleted != True]\n bullets = [b for b in bullets if b._deleted != True]\n\ndef update():\n global _timer\n _timer = _timer+1\n fighter._last_shot_at-=1\n \n game.print(int(_time.time()-START_AT), canvas_width-50, 20, \"white\", 18)\n if (fighter.damage_countdown\u003e0):\n fighter.costumeId = int(_timer/4)%2+1\n fighter.damage_countdown-=1\n else:\n fighter.costumeId = int(_timer/6)%2\n \n if (_timer%20==0):\n clear_dead_enemies_and_bullets()\n \n if (_timer%20==0):\n e = game.createSprite([\"enemy_1.png\",\"enemy_2.png\"])\n e.rotationStyle = \"fixed\"\n e.scale = 0.6\n e.x = random.randint(0,canvas_width)\n e.y = -20\n e.toward(fighter)\n enemies.append(e)\n if (_timer%10==0):\n l = game.createSprite(\"star_light.png\")\n l.x = random.randint(0,canvas_width)\n l.y = -20\n l.layer = 0\n l.scale = 0.2+random.random()*0.4\n lights.append(l)\n for e in enemies:\n e.stepForward(4)\n e.costumeId = int(_timer/6)%2\n if e._deleted==False:\n if(e.y\u003ecanvas_width+10):\n e.destroy()\n if e.touched(fighter):\n e.destroy()\n fighter.life-=1\n if(fighter.life\u003c=0):\n fighter_explode()\n game.sound.play('fighter_explode.wav')\n else:\n fighter.damage_countdown=30\n game.sound.play('damage.wav')\n \n for l in lights:\n if l._deleted==False:\n l.y += 18\n if(l.y\u003ecanvas_height+10):\n l.destroy()\n for b in bullets:\n if b._deleted:\n continue\n b.stepForward(20)\n if (b.y\u003c0 or b.y\u003ecanvas_height or b.x\u003ecanvas_width or b.x\u003c0):\n b.destroy()\n for b in bullets:\n for e in enemies:\n if b.touched(e):\n game.sound.play('enemy_destroy.wav')\n e.destroy()\n b.destroy()\n \ndef fighter_shoot( angle=0 ):\n if _timer==fighter._last_shot_at or _timer\u003e=fighter._last_shot_at+12 :\n game.sound.play('laser.wav')\n fighter._last_shot_at = _timer\n bullet = game.createSprite(\"bullet.png\")\n bullet.x = fighter.x\n bullet.y = fighter.y\n bullet.direction = angle\n bullets.append(bullet)\n\ndef fighter_explode():\n _explode_at = _time.time()\n fighter.destroy()\n sparks = []\n for i in range(18):\n s = game.createSprite(\"spark.png\")\n s.scale = 0.4\n s.r = 0\n s.x = fighter.x\n s.y = fighter.y\n s.direction = i*20\n sparks.append(s)\n def sparks_expand():\n for s in sparks:\n s.stepForward(2)\n s.scale = 0.4 * (1 + 0.5*math.sin(s.r))\n s.r+=0.8\n s.opacity -= 0.02\n if s.opacity\u003c=0:\n game.stop() \n game.print(\"你存活了 \"+str(int(_explode_at-START_AT))+\" 秒\", canvas_width/2-120, canvas_height/2-80, \"white\", 40)\n return\n game.forever(sparks_expand)\ngame.forever(update)\n","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":238,"hashid":"4y3s9gjp","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":841836,"file_name":"Arcade-Fantasy.mp3","project_id":47174,"asset_id":88343,"created_at":"2018-10-29T22:20:18.337+08:00","updated_at":"2018-10-29T22:20:18.337+08:00"},{"id":841837,"file_name":"lootbox.png","project_id":47174,"asset_id":88352,"created_at":"2018-10-29T22:20:18.345+08:00","updated_at":"2018-10-29T22:20:18.345+08:00"},{"id":841838,"file_name":"star_light.png","project_id":47174,"asset_id":88358,"created_at":"2018-10-29T22:20:18.347+08:00","updated_at":"2018-10-29T22:20:18.347+08:00"},{"id":841839,"file_name":"laser.png","project_id":47174,"asset_id":88369,"created_at":"2018-10-29T22:20:18.349+08:00","updated_at":"2018-10-29T22:20:18.349+08:00"},{"id":841840,"file_name":"spark.png","project_id":47174,"asset_id":92350,"created_at":"2018-10-29T22:20:18.351+08:00","updated_at":"2018-10-29T22:20:18.351+08:00"},{"id":841841,"file_name":"fighter_1.png","project_id":47174,"asset_id":92351,"created_at":"2018-10-29T22:20:18.353+08:00","updated_at":"2018-10-29T22:20:18.353+08:00"},{"id":841842,"file_name":"fighter_2.png","project_id":47174,"asset_id":92352,"created_at":"2018-10-29T22:20:18.355+08:00","updated_at":"2018-10-29T22:20:18.355+08:00"},{"id":841843,"file_name":"bg.jpg","project_id":47174,"asset_id":92353,"created_at":"2018-10-29T22:20:18.357+08:00","updated_at":"2018-10-29T22:20:18.357+08:00"},{"id":841844,"file_name":"bullet.png","project_id":47174,"asset_id":92357,"created_at":"2018-10-29T22:20:18.359+08:00","updated_at":"2018-10-29T22:20:18.359+08:00"},{"id":841845,"file_name":"enemy_2.png","project_id":47174,"asset_id":92399,"created_at":"2018-10-29T22:20:18.361+08:00","updated_at":"2018-10-29T22:20:18.361+08:00"},{"id":841846,"file_name":"enemy_1.png","project_id":47174,"asset_id":92400,"created_at":"2018-10-29T22:20:18.363+08:00","updated_at":"2018-10-29T22:20:18.363+08:00"},{"id":841847,"file_name":"laser.wav","project_id":47174,"asset_id":92401,"created_at":"2018-10-29T22:20:18.365+08:00","updated_at":"2018-10-29T22:20:18.365+08:00"},{"id":841848,"file_name":"damage.wav","project_id":47174,"asset_id":92402,"created_at":"2018-10-29T22:20:18.367+08:00","updated_at":"2018-10-29T22:20:18.367+08:00"},{"id":841849,"file_name":"enemy_destroy.wav","project_id":47174,"asset_id":92403,"created_at":"2018-10-29T22:20:18.369+08:00","updated_at":"2018-10-29T22:20:18.369+08:00"},{"id":841850,"file_name":"fighter_explode.wav","project_id":47174,"asset_id":92404,"created_at":"2018-10-29T22:20:18.371+08:00","updated_at":"2018-10-29T22:20:18.371+08:00"},{"id":841851,"file_name":"fighter_damaged.png","project_id":47174,"asset_id":92406,"created_at":"2018-10-29T22:20:18.373+08:00","updated_at":"2018-10-29T22:20:18.373+08:00"}]
橘蘋學習平台
橘蘋學習平台
我的作品
檢視專案頁
匯出
複製
匯入
刪除
截圖
幫助
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦