mieki256's diary



2018/10/16(火) [n年前の日記]

#1 [tic80] TIC-80でクラス相当を書く

TIC-80 を触ってたり。Luaでクラス相当をどうやって書くのか忘れてたので再勉強。

とりあえず、こんな感じの .tic を書いた。

movecircle_ss01.gif

ブラウザ上で実行するなら、以下を開けば…動くんじゃないかな…。

_movecircle.tic.html


ブラウザ上で動作するソレを出力したい場合は、TIC-80上で export html と打ち込めばいいらしい。ファイル保存ダイアログが開いて、html を保存することができる。

ソース。 :

ソースは以下のような感じ。無駄に長いけど…。

-- title:  testcart
-- author: mieki256
-- desc:   short description
-- script: lua

Obj = {}
Obj.new = function(cx, cy, ang, r)

 local o = {
  id=0, x=0, y=0, t=0,
  cx=cx, cy=cy, ang=ang, r=r
 }
  
 o.update = function(self,dr)
  self.id = 1 + (self.t % 32 // 16)
  local rad = math.rad(self.ang)
  local r = self.r
  self.x = r*math.cos(rad)+self.cx
  self.y = r*math.sin(rad)+self.cy
  self.ang = self.ang + 1.5
  self.r = self.r + dr
  self.t = self.t + 1
 end
  
 o.draw = function(self)
  spr(self.id,self.x-4,self.y-4,0)
 end
  
 setmetatable(o, {__index=Obj})
 return o
end

scrw, scrh = 240, 136
cx, cy = scrw/2, scrh/2
t=0

-- init objs
objs = {}
n = 24
for i=1,n do
 local o = Obj.new(cx, cy, i*360/n, 60)
 table.insert(objs, o)
end

-- main loop
function TIC()

 local r = 0
 if btn(0) then r=-1 end
 if btn(1) then r=1 end

 -- update 
 for i, o in ipairs(objs) do
  o:update(r)
 end

 -- draw
 cls(0)
 for i, o in ipairs(objs) do
  o:draw()
 end
 
 print("Lua: " .. _VERSION,4,8*1)
 print("count: " .. t,4,8*2)
 print(t//60 .. " sec",4,8*3)
 
 t=t+1
end

最初のあたりで Class相当を書いてある。書き方は、以下のページが参考になった。

_Luaでオブジェクト指向(1)―基本はコロン記法とメタテーブル - Minecraftとタートルと僕

ローカル変数について。 :

Luaの場合、ローカル変数を使いたいときは、
local x=0
のような感じで、local とつけてやるらしい。

sin,cosについて。 :

2Dゲームを書く場合、sin,cos が使えると便利なわけだけど。Luaの場合は以下のような感じで使える。
math.sin(ラジアン値)sin値を返す
math.cos(ラジアン値)cos値を返す
math.rad(角度)角度(0-360度)をラジアン値に変換する。

このあたりは、以下が参考になりそう。

_Lua 5.1 リファレンスマニュアル
_lua-users wiki: Math Library Tutorial
_Lua標準ライブラリ - AviUtlスクリプト Wiki

以上です。

過去ログ表示

Prev - 2018/10 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project