13
音音音音音音音音 .py 2015.9.12 @monochrojazz

音ゲーマーの憂鬱

Embed Size (px)

Citation preview

Page 1: 音ゲーマーの憂鬱

音ゲーマーの憂鬱 .py2015.9.12   @monochrojazz

Page 2: 音ゲーマーの憂鬱

Q: 何者か・ @monochrojazz・音ゲーマー・大学時代物理専攻だったが 会社に入ったら IT 部署に配属されていた→ じゃあプログラムで音ゲーを作ろう・セキュリティ関連の話に興味があるとかないとか

Page 3: 音ゲーマーの憂鬱

Q: この発表何すか・家で音ゲーやりたいがために勉強もかねて作ったもの(+ α )を紹介・その一部に python が使われていたりするのでその時使ったコードとかモジュール等を紹介(ややこじつけ気味)

Page 4: 音ゲーマーの憂鬱

百聞は一見に如かず

Page 5: 音ゲーマーの憂鬱

Android アプリ+ mbed +マイコン( PIC16F1827 )

Page 6: 音ゲーマーの憂鬱

最近携帯コントローラも作った

Page 7: 音ゲーマーの憂鬱

出来るだけ簡単に曲を追加したい

RaspberryPi

WindowsPC

タブレット 1タッチパネルで遊ぶ用タブレット 2外部コントローラで遊ぶ用

手動でデータ同期+2 回 USB でデータ配信は面倒

Web サーバにゲームデータを投げる

Python でデータ統合、共有フォルダにマウントした WindowsPCに保存

WindowsPC にデータ追加して後はタブレットでダウンロード

昔 RaspberryPiからデータ統合プログラム .exe ( C# )を動かしていたがWin8 からできなくなった

Page 8: 音ゲーマーの憂鬱

import sysimport sqlite3

argvs = sys.argv

conn = sqlite3.connect(argvs[1])conn_sub = sqlite3.connect(argvs[2])conn_sub.row_factory = sqlite3.Rowsql_sel = "select * from gameData"cursor = conn_sub.cursor()

for row in cursor.execute(sql_sel): print (row["status"]) sql_ins = "update gameData set status = ?, score = ?, bp = ? where noteId = ?" conn.execute(sql_ins, (row["status"], row["score"], row["bp"],row["noteId"]))

conn.commit()conn.close()conn_sub.close()

参考:http://d.hatena.ne.jp/hirogl_python/20100503/1272903240

カラム名でデータにアクセスできて見やすい

PHP で呼び出し$exe = 'python3 …/dbint.py …/Xperia/allbeater.db …/ARROWS/allbeater.db';$pp = popen($exe, "w");

Page 9: 音ゲーマーの憂鬱

+ α のお話( python と SPI 通信)

Page 10: 音ゲーマーの憂鬱

RaspberryPi + ADC コンバータ+温度・照度センサ

Page 11: 音ゲーマーの憂鬱

参考:というかここのコードの丸パクリhttp://tech.naviplus.co.jp/2014/07/23/raspberry-pi%E3%81%A7ad%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BFmcp3208%E3%82%92%E4%BD%BF%E3%81%86/

import sysimport timeimport RPi.GPIO as GPIO

class MCPLib: spi_clk = 11 spi_mosi = 10 spi_miso = 9 spi_ss = 8

  def getChData(self, ch): GPIO.output(self.spi_ss, False) GPIO.output(self.spi_clk, False) GPIO.output(self.spi_mosi, False) GPIO.output(self.spi_clk, True) GPIO.output(self.spi_clk, False)

中略

# 12 ビットの測定結果を AD コンバータから受信 value = 0 for i in range(12): value <<= 1 GPIO.output(self.spi_clk, True) if (GPIO.input(self.spi_miso)): value |= 0x1 GPIO.output(self.spi_clk, False)

GPIO.output(self.spi_ss, True) return value

Page 12: 音ゲーマーの憂鬱

import spidevimport time CE=0 spi = spidev.SpiDev()spi.open(0,CE) while True:raw = spi.xfer2([0x68,0x00]) # 0b01101000, 0x00value = ((raw[0]<<8)+raw[1]) & 0x3ff # Shifting operation

SPIdev っていうモジュールもあるけど失敗したので諦めたhttp://orion-lifelog.com/2014/12/23/raspberrypi%ef%bc%88%e3%83%a9%e3%82%ba%e3%83%99%e3%83%aa%e3%83%bc%e3%83%91%e3%82%a4%ef%bc%89-python-spidev%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e9%83%a8%e5%b1%8b%e3%81%ae%e6%b8%a9%e5%ba%a6%e3%82%92/

Page 13: 音ゲーマーの憂鬱

温度と照度が取れた

照度センサに手をかざして暗くする温度センサを温める