バーラル @ ウィキ
http://w.atwiki.jp/varlal/
バーラル @ ウィキ
ja
2011-08-02T13:52:18+09:00
1312260738
-
SlimDXについて(インストール方法・使い方のメモ)
https://w.atwiki.jp/varlal/pages/29.html
*SlimDXを使ってみよう^^
64Bitのパソコンを使っているのだが、C#のExpressEditionでMicrosoftDirectXを使おうとしたところエラー発生!!!!原因はMDXは64ビットには対応してないとのこと・・・orz
調べてみると、64bitPCで開発環境を32bitにすればいいらしい・・・!!!!だが、これの設定変更は、ExpresEditionではできない><残念!!
ということで、他のライブラリを探すことになり調べてみると・・・
MDX(MicrosoftDirectX)は開発終了をしていて、これ以上このライブラリを使用してのアプリケーション開発を推奨していないので、ちまたで流行のSlimDXを使用していこうと思う!
----
**①SlimDXダウンロード
とりあえず、[[SlimDX>http://slimdx.org/download.php]]でSDKをダウンロードして、インストールする。
----
**②SlimDX.DirectInputでKeyboard入力!
とりあえず、SlimDXについてきたサンプルプログラムを参考に書いてみた。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SlimDX; //1
using SlimDX.DirectInput; //2
namespace SlimDXtest
{
public partial class Form1 : Form
{
Keyboard keyboard;//3
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DirectInput dinput = new DirectInput();//4.make sure that DirectInput has been initialized
keyboard = new Keyboard(dinput); //5.create the device
keyboard.Acquire();//6.入力デバイスへのアクセス権を要求します。
timer1.Start();//7. タイマースタート
}
//8.timerのコンポネート追加
private void timer1_Tick(object sender, EventArgs e)
{
KeyboardState state = keyboard.GetCurrentState();//9.キーボードの状態取得
//10.label1に状態表示
StringBuilder data = new StringBuilder();
foreach (Key key in state.PressedKeys)
data.Append(Enum.GetName(typeof(Key), key) + " ");
label1.Text = data.ToString();
//11.実質的にしたい処理を記述する!
if (label1.Text=="UpArrow ")
{
MessageBox.Show("UpArrow");
}
if (label1.Text=="DownArrow ")
{
MessageBox.Show("DownArrow");
}
if (label1.Text == "RightArrow ")
{
MessageBox.Show("RightArrow");
}
if (label1.Text == "LeftArrow ")
{
MessageBox.Show("LeftArrow");
}
Application.DoEvents();//12.画面の更新
}
//13.フォームを閉じたときの処理を追加
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Stop();//14.タイマーストップ
//15.メモリ開放処理
if (keyboard != null)
{
keyboard.Unacquire();
keyboard.Dispose();
}
keyboard = null;
}
}
}
ウィンドウアプリケーションでプロジェクト作成して、上のように1から15までを記述して動くことを確認!!
しかし、どうしても直接 KeyboardState の内容を比較することができない。たとえばこんな感じ・・・
if (state.PressedKeys[0]==SlimDX.DirectInput.Key.UpArrow)
{
//処理
}
おそらく、NULLのときエラーを吐いているから、try・catchで例外処理をすべき?よくわからないからサンプルプログラムをほとんど流用してラベルに書かれた文字を比較することで、キーボード入力ごとの処理ができるプログラミングが一応かけた。
*※だれかシンプルに書ける方がいたらアドバイスください!!!!
- if (state == null) { return; } -- 名無しさん (2011-08-02 13:52:18)
#comment()
----
**SlimDXでジョイパッド入力!
まだ・・・
----
2011-08-02T13:52:18+09:00
1312260738
-
いまさら・・・一からPIC開発「備忘録」
https://w.atwiki.jp/varlal/pages/36.html
いまさらながらPICの開発に迫られた・・・><
PICって高校の頃にやってとてもめんどくさい印象しかない・・・
まぁ、アセンブラで全部記述してたってのが大きいと思うんだけど・・・
開発しなければならない状況になったらそうは言ってられない!!
よし!!いつでも、一からPIC開発できるように、やったことを全部メモっておこう!!というのがこのコーナーです。
&u(){16Fシリーズ最強}といわれる16F88を購入してみました!!
①買ったもの(両方秋月)
・[[マイクロチップ PICkit2(ライタ)>http://akizukidenshi.com/catalog/g/gM-02508/]]
・[[PIC 16F88(使用するマイコン)>http://akizukidenshi.com/catalog/g/gI-00567/]]
抵抗・コンデンサ・基盤・ハンダその他の素子は持っていることが前提です。
②とりあえず、開発環境を整える。
ネットから以下の2つをダウンロード+インストール
・[[MPLAB IDE v8.66 >http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&redirects=mplab]]
・[[PICkit 2 V2.61.00 Install.zip>http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit%202%20v2.61.00%20Setup%20A.zip]]
簡単にインストールできたっぽい。
③さて、回路を作るか・・・って回路のデータを探さないと!!
回路を作る上で参考になるのはデータシートっと・・・ってデータシートのページ数200over・・・僕にとってオーバーキルだ><無理!!読む気にならん!英語だし!!
ってことで、参考になりそうなリンク↓
・[[データシート(MicroChip社)>http://ww1.microchip.com/downloads/en/devicedoc/30487c.pdf]]
・[[16F88回路面で役に立ちそうなURL1>http://www.welcome.mech.nagasaki-u.ac.jp/gs400e/pic_sdcc/3_pic_circuit.htm]]
・[[16F88回路面で役に立ちそうなURL2>http://www.asahi-net.or.jp/~se1m-nitu/html/electro.htm]]
fmfm・・・内部クロックを使えば、PIC側として必須の回路は
・Vcc5V
・GND
・MCLR(リセット回路)
この3つのみ!
シリアル通信は
・PB2(RX)PICから見ると受信
・PB5(TX)PICから見ると送信
よしこのポートは空けておこう!
書き込みってどこでするんだろう・・・
[[16F88による、16F88ライタ(ダウンローダ)の製作>http://sfukuda.at.webry.info/201005/article_8.html]]
によると、PB6、PB7っぽいな!
おっとすばらしいサイト発見!
[[PIC16F88に書き込む(PICマイコン入門)>http://yamato-pic.blogspot.com/2010/11/pic16f88_09.html]]
・PB6(PGC)
・PB7(PGD)
だな!上のサイトにあるように書き込み回路を組み、PA0からLEDを光らせるような回路を作ってみるか!
と思ったが、これだと、PIC一回一回外さないとダメっぽいな・・・たしか、挿しっぱなしでできないんだっけ?いい回路図ないかなどっかに・・・
④とりあえずLEDを光らせるプログラムを書いてみようか!
内部クロックを使用する際のURL
・[[PIC16F88の内蔵クロックを利用する>http://tmp.junkbox.info/e16.html]]
・[[PIC16F88でプログラミング(趣味ブログ)>http://tmp.junkbox.info/e16.html]]
とりあえずってアセンブラ環境かよ!!!。・゚・(ノД`)・゚・。
かんばるしかない・・・
----
その他PIC開発で必要そうなもののリンク置き場
・[[PICkit 2ユーザーズガイド(PDF)>http://ww1.microchip.com/downloads/en/DeviceDoc/DS51553C_JP_PICkit2_UsersGuide.pdf]]
・[[PICkit 2の使用方法>http://www.ne.jp/asahi/air/variable/picmel/integration/write/pickit2/index.html#tag1-1]]
・[[PIC16F84AからPIC16F88変更での注意点(備忘録)>http://www.geocities.jp/beery_bear/Products/IPD/PIC16F84A_88.htm]]
----
----
2011-05-03T23:17:11+09:00
1304432231
-
トップページ
https://w.atwiki.jp/varlal/pages/1.html
*バーラル♪のwikiです。
&bold(){Total&counter() Today&counter(today) Yesterday&counter(yesterday)}
メインコンテンツとしてルネサス社のマイコンであるSH7125についてと、プログラミング(C、C++、C#、java、アルゴリズム)について綴ります!見にくいWikiですが・・・仕様です(`・ω・´)
サブコンテンツとして・・・色々載せていきます。。。
----
**【メインコンテンツ】
[[SH7125講習(目次)>http://www35.atwiki.jp/varlal/pages/13.html]]
[[SH7125講習でアップしたファイル一覧>http://www35.atwiki.jp/varlal/pages/19.html]]
[[Cの色々置き場>http://www35.atwiki.jp/varlal/pages/27.html]]
[[C++の覚書>http://www35.atwiki.jp/varlal/pages/16.html]]
[[C#の覚書【入門編】>http://www35.atwiki.jp/varlal/pages/22.html]]
[[C#の覚書【画像処理導入編】>http://www35.atwiki.jp/varlal/pages/32.html]]
[[SlimDXを使ってみる!>http://www35.atwiki.jp/varlal/pages/29.html]]
[[PIC開発>http://www35.atwiki.jp/varlal/pages/36.html]]
**【サブコンテンツ】
[[audacityでのMIX>http://www35.atwiki.jp/varlal/pages/23.html]]
[[イラスト>http://www35.atwiki.jp/varlal/pages/24.html]]
----
**【更新内容】
・C言語でオセロプログラミングを追加(2011/3/18)
・C#-SlimDXのページを追加(2010/12/20)
・Cの文字列の並び替え追加(2010/12/19)
・Cのページ追加+Cのプログラミングをいくつか記述(2010/12/14)
・C#の入門編2を記述(2010/8/7)
・サブカラムに人気ページ追加(2010/8/7)
----
【コメント】
どなたでも質問がある方はコメントしてください♪
ちなみに定期的にチェックしないのでよろしく!!
#pcomment(title_name=名前,コメントログ)
----
【varlalウィキのタグ一覧】
#tag_cloud(sort=word)
----
【参考に使っている本】
#amazon(4774133086X,left,image) #amazon(4797343664X,left,image,http://www.amazon.co.jp/exec/obidos/ASIN/4797343664/varlal617-22/ref=nosim)
左の本はSH7125ではありませんが、SH7125でも十分通用できます!
----
2011-05-03T20:03:11+09:00
1304420591
-
メニュー
https://w.atwiki.jp/varlal/pages/2.html
#javascript(){
<!-- [FC2 Analyzer] http://analyzer.fc2.com/ -->
<script language="javascript" src="http://analyzer5.fc2.com/ana/processor.php?uid=827690" type="text/javascript"></script>
<noscript><div align="right"><img src="http://analyzer5.fc2.com/ana/icon.php?uid=827690&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
<!-- [FC2 Analyzer] -->
}
**メニュー
-[[トップページ]]
-[[PDFファイル一覧>http://www35.atwiki.jp/varlal/pages/19.html]]
-[[まとめサイト作成支援ツール]]
-[[メニュー]]
----
**リンク
-[[MDX参考>http://msdn.microsoft.com/ja-jp/directx/default.aspx]]
-[[SlimDX参考>http://mainori-se.sakura.ne.jp/slimdx/wiki.cgi?page=%A4%CF%A4%B8%A4%E1%A4%E8%A4%A6]]
-[[バーラルブログ♪>http://shintarou617.blog41.fc2.com/]]
----
**更新履歴
#recent(20)
----
**人気ページ
#popular(5,ignore=トップページ,total)
----
**最終アクセス日
&today(j)
&link_editmenu(text=ここを編集)
2011-03-18T08:43:01+09:00
1300405381
-
C言語でオセロプログラミング
https://w.atwiki.jp/varlal/pages/34.html
**C言語でオセロのプログラミングをしてみた!!
**あれだよ!AI同士のバトルをする環境を作ってみたいな・・・と!
&bold(){PDF資料は[[こちら>http://www35.atwiki.jp/varlal/?cmd=upload&act=open&page=C%E8%A8%80%E8%AA%9E%E3%81%A7%E3%82%AA%E3%82%BB%E3%83%AD%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&file=%E3%82%AA%E3%82%BB%E3%83%AD%E5%9F%BA%E7%A4%8E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%87%E3%83%BC%E3%82%BF.pdf]]!!}←見やすいのでこっち推奨(`・ω・´)
----
●main.c●
#include<stdio.h>
#include"func.h"
//ここの関数を変えるだけでプログラミング同士のバトルが可能
#define VS1 ai_max
#define VS2 ai_max
//#define VS2 ai_easy
//#define VS1 TRUN_A
//#define VS2 manual_set
int main(void){
//変数宣言と初期化
char ban[8][8];
char *pt;
int turn = 0;
int end_flag;
//版に拠らない変数宣言
pt = &ban[0][0];
//初期化関数実行
init(pt);
//はじめのオセロを置く
set_first('x',pt,3,3);
set_first('x',pt,4,4);
set_first('a',pt,3,4);
set_first('a',pt,4,3);
//メインループ(パスが続くまで)
while(1){
//print(pt);
if(VS1('a',pt,turn)!=-1){
turn++;
end_flag = 0;
}else if(end_flag==1){
break;
}else{
end_flag = 1;
}
//print(pt);
if(VS2('x',pt,turn)!=-1){
turn++;
end_flag = 0;
}else if(end_flag==1){
break;
}else{
end_flag = 1;
}
}
//版情報表示+ポイント結果表示
print(pt);
point('a','x',pt);
return 0;
}
●func.h●
//冒頭・・・関数説明・設定情報など
/*
座標の設定
0→Y
↓
X
*/
//インクルードファイルのプロトタイプ宣言
void init(char *pt);
void print(char *pt);
int reverse(char moji,char *pt,int x,int y);
void set_first(char moji,char *pt,int x,int y);
//ユーザーが使える関数
int set(char moji,char *pt,int x,int y);
int try_set(char moji,char *pt,int x,int y);
void point(char moji_A,char moji_B,char *pt);
//各アルゴリズムの関数
int TRUN_A(char moji,char *pt,int turn);
int TRUN_B(char moji,char *pt,int turn);
//テスト用AIアルゴリズム
int ai_easy(char moji,char *pt,int turn);
int ai_max(char moji,char *pt,int turn);
int manual_set(char moji,char *pt,int turn);
●func.c●
#include<stdio.h>
//初期化関数
void init(char *pt){
int i;
for(i=0;i<64;i++){
*pt='0';
pt++;
}
}
//版情報表示
void print(char *pt){
int i,j;
printf("\r\n 0 1 2 3 4 5 6 7 Y\r\n");
for(j=0;j<8;j++){
printf("%d ",j);
for(i=0;i<8;i++){
printf("%c ",*pt);
pt++;
}
printf("\r\n");
}
printf("X\r\n");
}
//版にひとつセットするだけ!!!!!!!
void set_first(char moji,char *pt,int x,int y){
int num;
for(num=0;num<x*8+y;num++){
pt++;
}
*pt=moji;
}
//point表示
void point(char moji_A,char moji_B,char *pt){
int i;
int point_A=0;
int point_B=0;
for(i=0;i<64;i++){
if(*pt==moji_A){
point_A++;
}else if(*pt==moji_B){
point_B++;
}
pt++;
}
printf("\r\nResult: %c(%d) %c(%d)\r\n",moji_A,point_A,moji_B,point_B);
if(point_A>point_B){
printf("%c Is Winner!\r\n\r\n",moji_A);
}else if(point_A<point_B){
printf("%c Is Winner!\r\n\r\n",moji_B);
}else{
printf("Same Point!\r\n\r\n");
}
}
//x、y座標においたときにひっくり返せるか?
//ひっくり返せるなら、ひっくり返せる数を戻り値として返す
//ひっくり返せない(またはすでに置いてある)なら、を戻り値として返す。(0枚ひっくり返す)
int try_set(char moji,char *pt,int x,int y){
char *pt2;
int i,j;
int reverse_num=0;
char ban[8][8];
pt2=pt;
//配列に一時的に入れる(便宜上)
for(i=0;i<8;i++){
for(j=0;j<8;j++){
ban[i][j]=*pt;
pt++;
}
}
//すでに置いてあるかの確認
if(ban[x][y]!='0'){
return 0;
}
//縦方向の判断
i=x;
while(i>=0){
i--;
if(ban[i][y]=='0'){
break;
}else if(ban[i][y]==moji){
for(i++;i<x;i++){
ban[i][y]=moji;
reverse_num++;
}
break;
}
}
i=x;
while(i<8){
i++;
if(ban[i][y]=='0'){
break;
}else if(ban[i][y]==moji){
for(i--;i>x;i--){
ban[i][y]=moji;
reverse_num++;
}
break;
}
}
//横方向の判断
i=y;
while(i>=0){
i--;
if(ban[x][i]=='0'){
break;
}else if(ban[x][i]==moji){
for(i++;i<y;i++){
ban[x][i]=moji;
reverse_num++;
}
break;
}
}
i=y;
while(i<8){
i++;
if(ban[x][i]=='0'){
break;
}else if(ban[x][i]==moji){
for(i--;i>y;i--){
ban[x][i]=moji;
reverse_num++;
}
break;
}
}
//左斜め上方向の判断
i=x;
j=y;
while(i>=0&&j>=0){
i--;
j--;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i++,j++;i<x;i++,j++){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
i=x;
j=y;
while(i<8&&j<8){
i++;
j++;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i--,j--;i>x;i--,j--){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
//右斜め上方向の判断
i=x;
j=y;
while(i<8&&j>=0){
i++;
j--;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i--,j++;i>x;i--,j++){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
i=x;
j=y;
while(i>=0&&j<8){
i--;
j++;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i++,j--;i<x;i++,j--){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
return reverse_num;
}
//ひっくり返す関数
int reverse(char moji,char *pt,int x,int y){
char *pt2;
int i,j;
int reverse_num=0;
char ban[8][8];
pt2=pt;
//配列に一時的に入れる(便宜上)
for(i=0;i<8;i++){
for(j=0;j<8;j++){
ban[i][j]=*pt;
pt++;
}
}
//縦方向の判断
i=x;
while(i>=0){
i--;
if(ban[i][y]=='0'){
break;
}else if(ban[i][y]==moji){
for(i++;i<x;i++){
ban[i][y]=moji;
reverse_num++;
}
break;
}
}
i=x;
while(i<8){
i++;
if(ban[i][y]=='0'){
break;
}else if(ban[i][y]==moji){
for(i--;i>x;i--){
ban[i][y]=moji;
reverse_num++;
}
break;
}
}
//横方向の判断
i=y;
while(i>=0){
i--;
if(ban[x][i]=='0'){
break;
}else if(ban[x][i]==moji){
for(i++;i<y;i++){
ban[x][i]=moji;
reverse_num++;
}
break;
}
}
i=y;
while(i<8){
i++;
if(ban[x][i]=='0'){
break;
}else if(ban[x][i]==moji){
for(i--;i>y;i--){
ban[x][i]=moji;
reverse_num++;
}
break;
}
}
//左斜め上方向の判断
i=x;
j=y;
while(i>=0&&j>=0){
i--;
j--;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i++,j++;i<x;i++,j++){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
i=x;
j=y;
while(i<8&&j<8){
i++;
j++;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i--,j--;i>x;i--,j--){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
//右斜め上方向の判断
i=x;
j=y;
while(i<8&&j>=0){
i++;
j--;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i--,j++;i>x;i--,j++){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
i=x;
j=y;
while(i>=0&&j<8){
i--;
j++;
if(ban[i][j]=='0'){
break;
}else if(ban[i][j]==moji){
for(i++,j--;i<x;i++,j--){
ban[i][j]=moji;
reverse_num++;
}
break;
}
}
//ptに変更値を格納
for(i=0;i<8;i++){
for(j=0;j<8;j++){
*pt2=ban[i][j];
pt2++;
}
}
/*
printf("<check>\r\n");
for(i=0;i<8;i++){
for(j=0;j<8;j++){
printf("%c ",ban[i][j]);
}
printf("\r\n");
}
printf("</check>\r\n\r\n");
*/
return reverse_num;
}
//版にひとつセットする(置けるなら置いて、置けないならエラー表示)
int set(char moji,char *pt,int x,int y){
int num;
char *pt2;
pt2=pt;
if(try_set(moji,pt,x,y)>=1){
for(num=0;num<x*8+y;num++){
pt++;
}
*pt=moji;
reverse(moji,pt2,x,y);
return 0;
}else{
printf("\r\nERROR1\r\n");
return -1;
}
}
●AI_EASY.c●
#include<stdio.h>
#include"func.h"
//超簡易AI
ai_easy(char moji,char *pt,int turn){
int x,y;
int i,j;
char *pt2;
char ban[8][8];
pt2=pt;
//配列に入れて整理 以降pt2使用
for(i=0;i<8;i++){
for(j=0;j<8;j++){
ban[i][j]=*pt;
pt++;
}
}
for(i=0;i<8;i++){
for(j=0;j<8;j++){
if(try_set(moji,pt2,i,j)!=0){
if(set(moji,pt2,i,j)==-1){
return -1;
}else{
return 0;
}
}
}
}
return -1;
}
//MAX_POINT_AI
ai_max(char moji,char *pt,int turn){
int x,y;
int i,j;
char *pt2;
char ban[8][8];
int max_point=0;
pt2=pt;
//配列に入れて整理 以降pt2使用
for(i=0;i<8;i++){
for(j=0;j<8;j++){
ban[i][j]=*pt;
pt++;
}
}
for(i=0;i<8;i++){
for(j=0;j<8;j++){
if(try_set(moji,pt2,i,j)>max_point){
max_point=try_set(moji,pt2,i,j);
x=i;
y=j;
}
}
}
if(max_point==0){
return -1;
}else{
set(moji,pt2,x,y);
return 0;
}
}
//マニュアル操作
manual_set(char moji,char *pt,int turn){
int x,y;
print(pt);
printf("%cのターンです!>x y\r\n",moji);
scanf("%d %d",&x,&y);
if(set(moji,pt,x,y)==-1){
return -1;
}else{
return 0;
}
}
●turn_a.c●
#include<stdio.h>
#include"func.h"
TRUN_A(char moji,char *pt,int turn){
}
●turn_b.c●
#include<stdio.h>
#include"func.h"
TRUN_B(char moji,char *pt,int turn){
}
2011-03-18T08:29:32+09:00
1300404572
-
SH7125講習
https://w.atwiki.jp/varlal/pages/13.html
*SH7125の講習(目次)Total《&counter()》
主にPDFでアップしています。
**《準備編》
***①[[部品の購入>http://www35.atwiki.jp/varlal/pages/14.html]]
秋月や千石で必要部品を購入してください。
***②[[メイン基盤の作り方>http://www35.atwiki.jp/varlal/pages/15.html]]
どこから必要な回路情報を得られるかを紹介します。
また、回路もまとめてます。
***③HEW・FDTの使い方《未》
HEWとFDTの入手の方法。
新規ワークスペースの作成の方法など。
**《講習基礎編》
***④LEDを光らせる《未》
***⑤スイッチを使う《未》
***⑥[[AD変換の使い方>http://www35.atwiki.jp/varlal/pages/18.html]]
**《講習応用編》
***[[CMTの使い方>http://www35.atwiki.jp/varlal/pages/35.html]]
***PS2コントローラでメイン基盤を動かす。《未》
***マイクロSDをSH7125で読み書き。《未》
#amazon2(120x240)
#amazon2(120x240)
----
2011-03-18T08:19:01+09:00
1300403941
-
SH7125(CMTの使い方)
https://w.atwiki.jp/varlal/pages/35.html
CMTの使い方は以下のリンクへお願いします><めんどくさい仕様でさーせん;;
[[お手数ですがこちらにあります><>http://shintarou617.blog41.fc2.com/blog-category-10.html]]
2011-03-18T08:18:42+09:00
1300403922
-
Cで色々やってみよう!
https://w.atwiki.jp/varlal/pages/27.html
*Cで色々やったもの置き場です^^
主に自分のため(笑)
[[グラフ描写>http://www35.atwiki.jp/varlal/pages/25.html]]
[[微分方程式の数値解法(オイラー法)>http://www35.atwiki.jp/varlal/pages/17.html]]
[[方程式の数値解法>http://www35.atwiki.jp/varlal/pages/26.html]]
[[数値積分(ニュートンコーツ法・チェビシェフ公式・ガウス公式)>http://www35.atwiki.jp/varlal/pages/31.html]]
[[文字列並び替え>http://www35.atwiki.jp/varlal/pages/28.html]]
[[オセロプログラミング>http://www35.atwiki.jp/varlal/pages/34.html]]
----
2011-03-18T06:05:09+09:00
1300395909
-
Cでアルゴリズムをちょっと本気で
https://w.atwiki.jp/varlal/pages/33.html
参考にしたHP
[[最強最速アルゴリズマー養成講座」>http://www.itmedia.co.jp/keywords/algorithmer.html]]
2011-01-20T23:08:00+09:00
1295532480
-
C#で画像処理を導入!?
https://w.atwiki.jp/varlal/pages/32.html
*C#で画像処理するまでの導入編
何を隠そうとあるすばらしいサイトを見ながらコーディングしました!勉強になりました。本当にありがとうございます!!!!
参考したすばらしいサイト→[[初めてのC#~覚え書き~>http://homepage3.nifty.com/midori_no_bike/CS/]]
あれぇ?コメントまで丸パクリ・・・というかコピペ・・・さーせん><
**見た目はこんな感じ↓
#image(C#お絵かきフォーム!.jpg,title=C#お絵かきフォーム)
**ソースはこんな感じ↓(長いけどとっても簡単★)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging; // for ImageFormat
namespace お絵かき用
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 白紙にするToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void 線ToolStripMenuItem_Click(object sender, EventArgs e)
{
//Graphicsオブジェクトの作成
Graphics g = pictureBox1.CreateGraphics();
//(0,0)-(100,100)に、幅1の黒い線を引く
g.DrawLine(Pens.Black, 0, 0, 100, 100);
//リソースを開放する
g.Dispose();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
pictureBox1.Image = Image.FromFile(textBox1.Text);
}
catch
{
MessageBox.Show("指定が正しくありません!");
}
// Note: 表示位置は、SizeMode プロパティで設定する。
// Normal = 左上隅に表示(既定値)
// CenterImage = 中央 に表示
// AutoSize = 左上隅に表示(PictureBox の背景色は表示しない)
// StretchImage = 画像を伸縮し、PictureBox の領域いっぱいに表示
// Note: PictureBox は、BMP/GIF/JPEG/PNG/TIFF/ICON 形式をサポートしている。
}
private void button4_Click(object sender, EventArgs e)
{
try
{
label1.Text = "これは\nラベル1の\nテキストです。";
label1.Image = Image.FromFile(textBox2.Text);
}
catch
{
MessageBox.Show("指定が正しくありません!");
}
// Note: 表示位置は、ImageAlign プロパティで設定する。
// MiddleCenter = 中央 に表示(既定値)
// TopLeft = 左上隅に表示
// Note: Label は、BMP/GIF/JPEG/PNG/TIFF/ICON 形式をサポートしている
}
private void button2_Click(object sender, EventArgs e)
{
//Bitmap bmp = new Bitmap("D:\\TMP\\orchid_small.jpg");
Bitmap bmp = new Bitmap(textBox1.Text);
string format = bmp.RawFormat.ToString(); // bmp の画像形式を文字列で取得
string ext = // 画像の拡張子を求める
(format.IndexOf("b96b3cab-0728-11d3-9d7b-0000f81ef32e") != -1) ? "bmp" :
(format.IndexOf("b96b3cb0-0728-11d3-9d7b-0000f81ef32e") != -1) ? "gif" :
(format.IndexOf("b96b3caf-0728-11d3-9d7b-0000f81ef32e") != -1) ? "png" :
(format.IndexOf("b96b3cae-0728-11d3-9d7b-0000f81ef32e") != -1) ? "jpg" :
(format.IndexOf("b96b3cb1-0728-11d3-9d7b-0000f81ef32e") != -1) ? "tif" :
(format.IndexOf("b96b3cb5-0728-11d3-9d7b-0000f81ef32e") != -1) ? "ico" :
"xxx";
label2.Text ="画像形式"+ ext;
}
private void button5_Click(object sender, EventArgs e)
{
//Bitmap bmp = new Bitmap("D:\\TMP\\orchid_small.jpg");
Bitmap bmp = new Bitmap(textBox2.Text);
string format = bmp.RawFormat.ToString(); // bmp の画像形式を文字列で取得
string ext = // 画像の拡張子を求める
(format.IndexOf("b96b3cab-0728-11d3-9d7b-0000f81ef32e") != -1) ? "bmp" :
(format.IndexOf("b96b3cb0-0728-11d3-9d7b-0000f81ef32e") != -1) ? "gif" :
(format.IndexOf("b96b3caf-0728-11d3-9d7b-0000f81ef32e") != -1) ? "png" :
(format.IndexOf("b96b3cae-0728-11d3-9d7b-0000f81ef32e") != -1) ? "jpg" :
(format.IndexOf("b96b3cb1-0728-11d3-9d7b-0000f81ef32e") != -1) ? "tif" :
(format.IndexOf("b96b3cb5-0728-11d3-9d7b-0000f81ef32e") != -1) ? "ico" :
"xxx";
label3.Text = "画像形式" + ext;
}
private void button3_Click(object sender, EventArgs e)
{
// 画像形式の変換&保存★PictureBoxの変換&保存
ImageFormat image_format1;
switch (comboBox1.Text)
{
case "Bmp": image_format1 = ImageFormat.Bmp; break;
case "Gif": image_format1 = ImageFormat.Gif; break;
case "Jpeg": image_format1 = ImageFormat.Jpeg; break;
case "Png": image_format1 = ImageFormat.Png; break;
case "Tiff": image_format1 = ImageFormat.Tiff; break;
default: image_format1 = ImageFormat.Bmp; break;
}
pictureBox1.Image.Save(
textBox1.Text + "." + comboBox1.Text, // 保存するファイル名
image_format1); // 保存する画像形式
// Note: Image.Save() は、ファイルを強制上書きモードで保存する。
}
private void button6_Click(object sender, EventArgs e)
{
// 画像形式の変換&保存★ラベルの変換&保存
ImageFormat image_format2;
switch (comboBox2.Text)
{
case "BMP": image_format2 = ImageFormat.Bmp; break;
case "GIF": image_format2 = ImageFormat.Gif; break;
case "JPEG": image_format2 = ImageFormat.Jpeg; break;
case "PNG": image_format2 = ImageFormat.Png; break;
case "TIFF": image_format2 = ImageFormat.Tiff; break;
default: image_format2 = ImageFormat.Bmp; break;
}
label1.Image.Save(
textBox2.Text + "." + comboBox2.Text, // 保存するファイル名
image_format2); // 保存する画像形式
// Note: Image.Save() は、ファイルを強制上書きモードで保存する。
//画像の保存にはusing System.Drawing.Imaging ; // for ImageFormatが必要!
}
private void button9_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
textBox1.Text = openFileDialog1.FileName;
}
private void button10_Click(object sender, EventArgs e)
{
/*
*ソリューションエクスプローラで、追加 → 既存項目の追加 を選択すると、ダイアログ
*が開くので、そこで、埋め込みたいファイル "image1.jpg" を選択する(このファイルは、
*プロジェクト フォルダへ自動的にコピーされる)。
*次に、このプロパティのページを開き、ビルドアクションを「埋め込まれたリソース」に
*設定する。
*/
Bitmap bit_map1 = new Bitmap(GetType(), "scene.jpg"); // データを取り出す
pictureBox1.Image = bit_map1; // 画像の表示
label1.Image = bit_map1;
}
private void button11_Click(object sender, EventArgs e)
{
// 読み込む画像の格納用ビットマップの宣言
Bitmap bit_map1 = null;
try
{
// textBox1 で指定された画像ファイルをロード
bit_map1 = new Bitmap(textBox2.Text);
}
catch
{
MessageBox.Show("ファイルがNGです!", Application.ProductName);
return;
}
int sizeX = bit_map1.Width;
int sizeY = bit_map1.Height;
// 加工した画像の格納用ビットマップの宣言(32bitカラーピクセル形式)
Bitmap bit_map2 = new Bitmap(sizeX, sizeY, PixelFormat.Format32bppArgb);
for (int Y = 0; Y < sizeY; Y++)
{
for (int X = 0; X < sizeX; X++)
{
int P = bit_map1.GetPixel(X, Y).ToArgb(); // ピクセルデータの取得
if (radioButton2.Checked) P ^= 0xffffff; // 反転色の計算
bit_map2.SetPixel(X, Y, Color.FromArgb(P)); // ピクセルデータの設定
}
}
label1.Image = bit_map2;
}
private void button12_Click(object sender, EventArgs e)
{
label1.Image = new Bitmap(label1.Width, label1.Height);
Graphics g = Graphics.FromImage(label1.Image);
g.ResetTransform(); // 各変換設定値のリセット
g.ScaleTransform(0.7F, 0.7F); // X軸とY軸の拡大率の設定
g.DrawImage(Image.FromFile(textBox2.Text), 30, 30); // 描画(label1 を元に 指定した座標へ)
}
}
}
----
2011-01-19T23:05:15+09:00
1295445915