某有名落ちものゲーム っぽいものを作ってみる

Slides:



Advertisements
Similar presentations
わんくま同盟 東京勉強会 #10 オブジェクト指向 #1 Windows メッセージを使いこな す -Windows 流オブジェクト指向 - とっちゃん 高萩 俊行 Microsoft MVP for Windows SDK 2005/ /09.
Advertisements

特別支援教育で使える PowerPoint の活用法 研修 最低限必要なスキルはこれでバッチリ!! ICT 活用支援員 高松 崇.
Powerpoint 機能の使い方. 1.簡単な図の作成 例として植物個体の図を作成 (1)輪郭を大まかに描く まず、「オートシェイプ」 → 「線」 → 「曲 線」を選び、輪郭を適当に描く.
SSP in a Nutshell #1.5 最近の新機能よせあつめ
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
上手なプレゼンのための ワンポイント・アドバイス
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
HSPでのミニゲーム作成 早稲田実業学校PC班 Y氏.
Power Pointの小技 付箋はがしのアニメーション.
MajorなMeasure 囚人.
Java言語による シューティングゲーム作成
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
第四回 VB講座 画像とタイマー.
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
RAD Studio 14/09/27 TEffectを使った綺麗なForm
MSBuild 色々出来るよ 2011/04/02 お だ.
インターネットを利用した 数学自習用教材の開発
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
ゲームプログラミング体験演習
CSP記述によるモデル設計と ツールによる検証
情報学部 プログラミング体験教室 (中級編)
情報 第2回:状態遷移 その2.
マイクロソフト Access を使ってみよう 第4回
ファイアウォール 基礎教育 (2日目).
(Wed) Edited by KON IT講習会 一太郎編.
第四回 ゲーム                 05A1054         前田嵩公.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
迷宮師 コードレビュー チームカテキン.
C言語を用いたシューティング ゲームの作成
P2P方式によるオンラインゲームの研究、開発
Borland Delphi 6 でビジュアルプログラミング
シューティングゲーム.
プログラミング入門 電卓を作ろう・パートIV!!.
Unreal Engine 4 のインストール 2017年 7月 金子邦彦.
学校の絵葉書を作ろう! 情報C 実習.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
情報コミュニケーション入門b 第2回 Part2 パソコンの基本操作 ~日本語入力まで
 情報の授業 アルゴリズムとプログラム(1) Go.Ota.
PowerPoint へようこそ 簡単に操作するための 5 つのヒント.
ゲーム開発モデルの基礎.
諸連絡 USBメモリの販売について 日時:6月23日(月)授業開始前 商品:プリンストン社製32MBのUSBメモリ
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
・タイプ別のフレームワーク ・デジタルTips(小技テクニック情報)
MP4401をどうするか→SMA4032で代替案 Arduinoへの接続例 SMA4032 これがそのまま使えるのが一番幸せ・・・ OUT1
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
情報コミュニケーション入門b 第2回 Part2 パソコンの基本操作 ~日本語入力まで
情報処理 タイマの基礎 R8C タイマの基礎.
プロジェクト演習Ⅱ インタラクティブゲーム制作
TDD ってどんな感じ? FizzBuzz を作ってみる 2010/01/22 biac 1.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
プロジェクト演習 知能情報学部 新田直也.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
ゲームプログラミング体験演習 :30-14:15 九州産業大学 情報科学部 米元.
全体ミーティング (5/23) 村田雅之.
某有名落ちものゲーム っぽいものを作ってみる
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
第6回:得点を表示しよう! (文字の表示、乱数)
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
モグラたたき.
第2回 開発環境とゲーム 05A1030 佐々木 和也.
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
プロジェクト演習Ⅱ インタラクティブゲーム制作
3.1 シューティングゲームの当たり判定 当たったら死亡.
プロジェクト演習Ⅱ インタラクティブゲーム制作
プログラミング教室 鹿児島大学プログラミング研究会 with Scratch.
@kagamiz (Jayson Sho Toma)
FPS(続き).
第0.5回: ~Unity Editorの操作方法~
Presentation transcript:

某有名落ちものゲーム っぽいものを作ってみる ぽぴ王子@わんくま同盟 popi@wankuma.com http://www.wankuma.com/popi/ http://www.ne.jp/asahi/popi/prince/

アジェンダ このセッションのきっかけ 題材に選ばれる理由 今回のゲームで使われているテクニック スレッド 画面表示 キー入力 等々… まとめ

最後にみんなでプレイしていた「テ○リスっぽいもの」(バグ付き)がすごく楽しそうだった Wikipediaで調べた きっかけ(1) 2008年12月の大阪勉強会#25 Game Day 最後にみんなでプレイしていた「テ○リスっぽいもの」(バグ付き)がすごく楽しそうだった Wikipediaで調べた Ω ΩΩ<な、なんだってー!!! ということで『後で作るリスト』に登録 なお、『テトリス』の持つ数学性、動的性、知名度、並びに実装の平易性から、『テトリス』をゲームプログラミングの練習題材として用いられる例がしばしば見られる。

今回スピーカーに立候補したものの、何を話すかは全く未定だった こんな感じで考えた ↓ きっかけ(2) 今回スピーカーに立候補したものの、何を話すかは全く未定だった こんな感じで考えた ↓ 電卓の作り方をもーちょっと川崎詳しく! 某世界的に有名な落ちものゲーム ぽぴBASIC(笑) VS2010とかC# 4.0の新機能について Webサービスを使ってごそごそ(Twitterをいじったりとか) 使ったことない  Twitterはユーザーでないと ウケが悪い(中さん談)

“某落ちものゲーム”が題材に選ばれる理由 画面上で動くオブジェクトが1個だけなので、当たり判定が簡単 動かないブロックの判定は落ちきった時でOK そろって いたら 消す! 動くのは これだけ! 落ちきったら 判定

スレッド 画面描画はメインスレッドでしか動かせない メインスレッドのみで全ての処理を動かすと、時間のかかる処理を行ったときに全体が止まってしまう メインスレッドは描画のみ使用し、ゲームの処理はサブスレッドで行う

ゲーム用のスレッドともう一つ、タイマー用にスレッドを用意する Environment.TickCountを見てタイマーを減らす“だけ”の処理を行う Count[0] : 100 Count[1] : 0 Count[2] : 0 Count[3] : 0 一定時間経過 Count[0] : 50 Count[1] : 0 Count[2] : 0 Count[3] : 0 タイマースレッドで カウンタを減らす

ゲームループ 全体的にこんなイメージで動いています ゲームスレッド メインスレッド キー入力 カウント>0? オブジェクト 移動 タイマースレッド ゲームスレッド メインスレッド キー入力 カウント>0? オブジェクト 移動 カウントダウン 画面描画 画面描画

モード構成 以下の3モードを用意する デモモード ゲーム中動作モード ゲームオーバーモード キーを押されるまで待機 ブロックを動かす そろったらブロックを消す ゲームオーバーモード ブロックをグレー表示 → デモに遷移

画面表示 フォーム上のPictureBoxをメインスクリーンとして、そこに画像を作成する 落ちるブロックを描画するオブジェクトプレーンと、落ちて固定されたブロックを描画するバックグラウンドプレーンを用意

背景とバックグラウンドプレーン、オブジェクトプレーンを合成して表示する 固定ブロックがどこにあるかを調べるため、仮想スクリーンで管理する 画面表示のイメージ 背景とバックグラウンドプレーン、オブジェクトプレーンを合成して表示する 固定ブロックがどこにあるかを調べるため、仮想スクリーンで管理する 背景 バックグラウンド プレーン 仮想 スクリーン T 正 L J オブジェクト プレーン

Point型の配列を用意し、4×4のどの位置にブロックを描くかを決めておく ブロックの表示 Point型の配列を用意し、4×4のどの位置にブロックを描くかを決めておく ② ① ① ④ ③ ② ④ ③ Point[] p = new Point[] { new Point(0,1), new Point(1,1), new Point(2,1), new Point(1,2) }; Point[] p = new Point[] { new Point(1,0), new Point(1,1), new Point(1,2), new Point(0,1) };

ポイントごとに移動と回転の可否をチェックする このブロックが右移動する場合②の右は③のブロックが存在することになる 仮想スクリーン上はブロックが存在していないことになっているので問題ない ① ③ ② ④

キー入力はWin32APIのGetKeyStateを使用 次の3パターンのキーリピート制御を行う キー入力について キー入力はWin32APIのGetKeyStateを使用 次の3パターンのキーリピート制御を行う 横移動 ブロック落下 回転

キーリピート(横移動) 1度目に押したときに移動 押したままであればある程度待つ それ以降は同じ速度で移動 図にあらわすとこんな感じ

キーリピート(ブロック落下&回転) ブロック落下は押された状態である程度間隔を置いてリピート 左右回転キーは一度押したら離すまでそのまま

ブロック落下時に下にブロックが存在するか一番下まで到達した時に判定を行う 新しい仮想スクリーンを用意し、そろっていないブロックのみコピー ブロック落下判定 ブロック落下時に下にブロックが存在するか一番下まで到達した時に判定を行う 新しい仮想スクリーンを用意し、そろっていないブロックのみコピー コピーしたら仮想スクリーンを置き換える 背景を 再描画 この行以外 をコピー

Wikipediaにあるように、他のゲームに比べると実装は簡単 でも、基礎がしっかりできている人でないと(テト○スを作るのは)難しい まとめ Wikipediaにあるように、他のゲームに比べると実装は簡単 でも、基礎がしっかりできている人でないと(テト○スを作るのは)難しい Windows FormよりWPFの方が簡単! でもおいらはWindows Form大好きだぜ! 今回のセッションが役立つかはわからないけれど、ゲームの作り方は自分なりに考えてみるといいヨ!