ページ 11

一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 11:54
by シャープ
こんにちは。

デスクトップマスコットのようなものを作ろうとしているのですが、
プログラム内での時間(朝か、夜かなど)を(現実世界の)一定時間ごとに操作したり、
デスクトップマスコットが一定時間ごとに自分でつぶやいたり、
ユーザからアクションがあった時に対応したり、などの動作を実現するには、
どのようなコーディングをすればよいのでしょうか。

私はこれまでゲームを作ったことが少しだけあるので、
ループ処理で時間経過を判断するのかとも思ったのですが、
ゲームのように頻繁に画面描写が変化したり、刻一刻と演算が走ったりするわけではないので、
FPS30などの頻繁な操作は無駄だろうかと感じました。

検索したところ、Timerメソッドというものがあるようですが、
これを利用するのが一番いいのでしょうか?
そのほかに使うべきキーワードがありましたら、お伝えください。

よろしくお願いいたします。

Re: 一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 16:47
by シャープ
連続投稿してしまい申し訳ありません。言語はC#です。

Timerを使って監視した場合、Timer動作中にユーザからの入力(Console.ReadLineなどを用いる)
を行うことはできませんか?

また、やはりゲームのようなループを利用するのは無駄でしょうか。

お返事をよろしくお願いいたします。

Re: 一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 16:51
by softya(ソフト屋)
普通にウィンドウアプリとして制作されたほうが良いと思います。
※ 背景が透明なウィンドウアプリと思ってもらえば。
入力する場合はeditなどのコントロールを使います。

ネットで公開している人もいるので参考にしてみてください。
「いえひのプログラミング部屋  【C#】 デスクトップマスコットの作り方pert1 「画像の表示」」
http://skylinker.blog.fc2.com/blog-entry-29.html

Re: 一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 17:00
by シャープ
softyaさん、お返事をありがとうございます。
実はデスクトップマスコットというのは比喩でして、本当は人口無能のようなものを制作したいのです
(人口無能というにはあまりにお粗末なためこのように申し上げました)。
一定時間が経過すると自分で発言し、それ以外はユーザからのアクションにこたえるといった形です。
このプログラムを立ち上げつづけ、どこかのサーバーに配置してツイッターへの投稿などが
できればと考えております。
入力というのも、ツイッターからの入力などを想定しておりましたが、
そこに至るまではご教授いただきました「edit」を使用したいと思います。

ご提案いただきましたサイトは参考にさせて頂いておりましたが、途中で更新が途切れている
(part5からの続きがない)ように思っておりまして、そこから先を確認しておりませんでした。
これから確認いたします。

お返事をありがとうございました。

Re: 一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 17:20
by softya(ソフト屋)
C#でツイッターと通信するアプリの場合は、GUIは特に必要ないですね。
動作状況の表示としてはウィンドウがあったほうが便利かもしれません。
なので、デスクトップアプリとは作り方が変わってきます。

>どこかのサーバーに配置してツイッターへの投稿などが

C#を動かすサーバーはレンタル料が高いかもしれません。
あとC#のWEBサーバーアプリはデスクトップと全然違う作り方をします。
自分のパソコンで起動中だけそのマスコット専用に用意したツイッターアカウントと交信するアプリで良いんじゃないでしょうか。

Re: 一定時間ごとにイベントを行いたい場合、どのような方法が適しているでしょうか。

Posted: 2014年1月18日(土) 17:32
by シャープ
softyaさん、お返事をありがとうございます。
先ほどお伝え頂いたとおりウィンドウを利用した方法で制作を進めていたのですが、この方がとても見やすいと感じました。ご助言をありがとうございました。
また先のサイトですが、やはりpart5で更新が止まってしまったようで、確認することはできませんでした。
しかし、ウィンドウアプリケーションでのTimerは使い方がわかりやすく、現在考えの通りに利用することが
できておりますので、問題はないと思います。

>C#を動かすサーバーはレンタル料が高いかもしれません。
フリーサーバーなども提供されているご時世ですのであまり深く考えておりませんでしたが、
やはり自分のパソコンの中での稼働がよいのかもしれませんね。
こちらの方向で考えを進めてまいります。

お早いご教授、まことにありがとうございました。
これをもちましてこちらのスレッドは解決とさせていただきます。
よろしくお願いいたします。