FC2BBS


件名:  名前:  パスワード設定:
メッセージ:
生放送のものです - ともや 2020/06/06 (Sat) 20:12:57
SoundPlayer splayer = new SoundPlayer(@"D:\ミュージック\1.mp3");
splayer.Play();  
Re: 生放送のものです - 黒味ポロ 2020/06/10 (Wed) 12:45:35
わかりました。そういうことでしたら個々のサイトで大丈夫です。ただ、僕も学校があって見れる時間帯が少ないので話が進むのがゆっくりになってしまうと思います。
そして波線(エラー)についてですが、Playなどに関しては一度このサイトのコメントとしてでいいので、ソースを見せていただきたいです。
もう一つのほうは僕にはわかりませんが、農神トールさんのアドバイスをもとにコメントアウトしてみてリビルドしてみてください。  
Re: 生放送のものです - ともや 2020/06/10 (Wed) 18:39:57
すみません、playのソースを見せるという意味が理解できないのですが、
MediaPlayer mp = new MediaPlayer();
mp.Open(new Uri(@"D:\ミュージック\1.mp3"));
mp.Play();

これでよいでしょうか?
  
Re: 生放送のものです - 黒味ポロ 2020/06/10 (Wed) 21:07:06
usingディレクティブを含めたソースコード全体を送っていただきたいです。そして、波線が出る部分を、「$」など、他と混ざらない記号で囲っていただけるとわかりやすくていいです。
(m.Play()のm.Play()に波線が出るなら$m.Play()$
m.Play()のPlayのみに波線が出るならm.$Play$()って感じです。逆にややこしくてわかりにくいかもですがお願いします)  
Re: 生放送のものです - ともや 2020/06/11 (Thu) 20:56:36

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Media;


namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
/InitializeComponent/();
}

private void Form1_Load(object sender, EventArgs e)
{
MediaPlayer mp = new MediaPlayer();
mp.Open(new Uri(@"D:\ミュージック\1.mp3"));
mp.Play();

}
}
}

/のところに波線が引かれてしまいます。
現在のコンテキストに'InitializeComponent'という名前は存在しません。
というエラー内容です。


  
Re: 生放送のものです - 農神トール 2020/06/11 (Thu) 21:21:00
ともやさん。
済みません。黒神さんではありませんが、教えて下さい。
えっと、そのコードを記述する時、WindowsformForm App(.NET Framework)のプロジェクトを選択してコーディングしてますよね?
WPF App(.NET Framework)じゃないですよね?  
Re: 生放送のものです - ともや 2020/06/11 (Thu) 21:49:18
ソリューションのところにWindowsFormsAppと書かれているので、おそらく大丈夫だと思います。
  
Re: 生放送のものです - 農神トール 2020/06/11 (Thu) 21:52:31
initializeComponentをコメントアウトして、リビルドはしてますよね?  
Re: 生放送のものです - 農神トール 2020/06/11 (Thu) 22:36:11
ともやさん。
すみません。明日、早いので落ちます。
明日、18時30分以降でしたら家にいますので、私もお手伝いさせてください。
その時間以降は、この掲示板を覗いています。
1.念のため、リビルドした時につけたコメントアウトを改めて外して、再ビルド(▶開始)をやってみてください。
2.それもダメなら、Form.Designer.cs(自動で作成されるもの)を弄ってないですか?削除してるとか?
まず、これが思いつくんですよね。
  
Re: 生放送のものです - 農神トール 2020/06/12 (Fri) 21:43:04
落ちます  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 12:29:10
すみません。返信遅れました。リビルドはして、そのあとにコメントアウトをはずして実行してみたんですけど、うまくいきませんでした。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 12:31:31
黒神ポロさん、農神トールさん、ありがとうございました。
とても勉強になりました。
後は自分で頑張ります!
  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 12:43:33
Form.Designer.cs(自動で作成されるもの)もあるんですよね?  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 16:19:38
using ...... のところにでしょうか??
  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 16:31:56
ああ、よかった。まだ見てくれてたんですね。
えっと、program.csとか、2019バージョンなら、form[デザイン].csというタブが、メインウインドウにないですか?  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 16:56:53
すみません。ちょつと記述が間違ってました。
2019バージョンなら、Form.cs[デザイン]だったと思いますprogram.csは無視してください。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:25:06
あります!
  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:25:57
今日はまだ時間はありますか?
私は夜9時ごろまでは大丈夫ですけど。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:32:31
すみません、とても言い出しにくいのですが、今学生なのですが、最近まで先生に聞いても、学校でvisual studioをインストールできなくて解決しなかったんですけど、昨日インストールができて、そこで先生に教えてもらったコードを打ったら、エラーがなくなりました。
ここまで教えていただいたのに、すみません。  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:34:29
了解です。
因みに、どんなコードが足りなかったんですか?
参考までに。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:35:42
しかし、エラーはなくなったのですが、なぜか音源が再生されません。

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Media;


namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private readonly dynamic _wmp = Activator.CreateInstance(Type.GetTypeFromProgID("WMPlayer.OCX.7"));
private dynamic _wmp_v = Activator.CreateInstance(Type.GetTypeFromProgID("WMPlayer.OCX.7"));
private int playflag;
private int volumeflg;


private void Form1_Load(object sender, EventArgs e)
{

if (_wmp.Settings.mute == true)
{
_wmp.settings.mute = false;

}
else
{
_wmp.settings.mute = true;


}
}
private void Form2_Load(object sender, EventArgs e)
{
if (playflag == 0)
{
_wmp.controls.Play();
playflag = 1;
}
else
{
_wmp.controls.Pause();
playflag = 0;
}

}

private void Form3_Load(object sender, EventArgs e)
{
_wmp.URL = "D:\\ミュージック\\1.mp3";

playflag = 1;
volumeflg = 1;
}

}

}

デザインのところにボタンは追加しました。

なぜでしょうか?

(先生はこれでおんげんがさいせいできたらしいです。)  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:37:09
足りないというか、先生が考えてきてくれたので、まるっきり違う形だと思います。

  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:40:06
"D:\\ミュージック\\1.mp3"
は、ともやさんの再生したい音源のパスなんですよね?  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:44:54
自分の音源が置いてあるファイルのパスです
  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:46:03
その音源は、プログラムが置いてあるフォルダにあるんですよね?  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:48:52
プログラムが置いてあるフォルダというのは、
visual studioのこのコードが書いてある
ファイルのフォルダということでしょうか?  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:50:59
そうです。visual studioのこのコードが書いてある
ファイルのフォルダです。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:53:49
フォルダはミュージックのフォルダに入っています。
今ソリューションエクスプローラーに1.mp3をコピーして貼り付けてみて、実行してみたら、できなくて、
フォルダに直接貼り付けて実行してもできませんで知った。
1.mp3をプログラムが置いてあるフォルダに入れて、パスもそこにせっていするのですか?  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:54:50
私がいつもやってる方法を書きます。
ちょっと時間ください。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 17:57:02
わかりました。  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 17:59:31
目的の音源のフォルダを開く
→目的のファイルを選択→上の「ホーム」に移動して、パスのコピーをクリック
→_wmp.URL = "ここにペースト";

ダブルクオーテーションに注意してください。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 18:02:36
ぼくも同じようにやっています!
  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 18:04:56
うーん。
そうなると、プログラムが書いてあるフォルダに入れて、パスもそこにしてみますか?  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 18:06:17
あ、違いました。僕はパスが書いてあるところの空白のところを右クリックしてコピーしてました。
それだと音源ファイルの名前はコピーされないので、
農神トールさんのほうが良いですね!
有難うございました!
  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 18:32:32
プログラムが書いてあるフォルダに音源ファイルを入れて、パスもそこにする。

プログラムが書いてあるフォルダに音源ファイルを入れて、パスはミュージックにあるファイルのパスを入れる。

ソリューションエクスプローラーに張り付ける、
というような組み合わせを試したんですが、できませんでした。
おそらく、パスは問題なく、ほかに問題があるのかと思います。  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 18:35:51
結局、お力になれず申し訳ありませんでした。
学校でVSがインストールされたのであれば、先生に相談するのが確実ですね。やっぱり、画面を見ながら説明ができるというのが一番の武器ですから。
そして、学校の先生のソースですが、私は完全に理解は出来てません。WindowsMediaPlayerで再生させるために、いろいろ設定されているようですが、そこは?です。
私は、メモ帳とcscで作ってましたので、前の投稿に書いたコードで再生させるのが精いっぱいですね。
では、良い、プログラムライフを。  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 18:39:35
あれ、投稿が前後してしまった。
再生できない?
うーん。私も、先生のコードが完全に読めれば良いんですけど。WindowsMediaPlayerを使う場合、別のdllも参照するんですよね?
ごめんなさい。  
Re: 生放送のものです - ともや 2020/06/13 (Sat) 18:50:06
dllは参照するものは参照したはずだと思います。

いえいえ、とっても勉強になりました。

もっと上達していろんなもの作って帰ってきます!
その時に作ったものを見せたいので、黒神ポロさん、農神トールさん、名前を変えないでいてくださいね!
またきます!

改めて、黒神ポロさん、農神トールさん、本当にありがとうございました!  
Re: 生放送のものです - 農神トール 2020/06/13 (Sat) 18:59:30
いや、ともやさんにしろ、黒神さんにしろ、若いって良いですね。
気力が漲ってるというか。じじいの私には羨ましい。
私も、学生時分にプログラミングを覚えていたら、少しは違う人生を歩んでたのかな。
最近、JavaScriptに浮気してたので、もう一回、真面目にC#をやってみようかな(笑)。

ともやさん、ファイトです。  
Re: 生放送のものです - 農神トール 2020/06/14 (Sun) 07:45:59
ともやさん。
もう、見てないですかね?
音源が再生されないという不具合ですが、パスの¥マークを/(バックスラッシュ)に変えてみてもダメですか?
貼り付けてもらったソースを省略して作ったものを私の環境で試してみましたが、それなら再生できました。
  
Re: 生放送のものです - 黒味ポロ 2020/06/14 (Sun) 08:19:43
見てない間に完結してた!
お力になれず、すみませんでした。先生のソースは僕にはよくわかりませんでした。なので、農神トールさんが言っている\を/にするのをやってみてもらって、それでもだめなら、やはり先生本人に聞くのが一番かもしれないですね。
わかりました!名前変えずに待ってます!!頑張ってください!!僕も頑張ります!  
Re: 生放送のものです - ともや 2020/06/14 (Sun) 08:39:59
再生されませんでした。あとは先生に頼りたいと思います!
  
Re: 生放送のものです - 黒味ポロ 2020/06/14 (Sun) 17:12:51
わかりました!お力になれずすみませんでした。色々なものを作って、それを見せていただける日を楽しみにしています!!これからもお互い頑張っていきましょう!!(問題を解決できなかったのになんか偉そうなこと言ってごめんなさい)  
Re: 生放送のものです - 農神トール 2020/06/14 (Sun) 18:46:18
黒神さん、ちょっと私の環境で動いたファイルを試してもらって良いですか?
多分、黒神さんもVSは使ってないと思いますので。
以下のコードをメモ帳にコピペ。拡張子csで保存。コマンドプロンプトでコンパイル。
参照等は一切なしです。
私の環境では、これでフォームとボタンが表示され、プレイボタンを押すと再生されます。
************************************************************************************

using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

class Wmp : Form
{
Wmp()
{
//ボタン関連
Button button1 = new Button();
button1.Text = "PLAY";
Controls.Add( button1 );
button1.Click += new EventHandler( btn1_Click );
}

private readonly dynamic _wmp = Activator.CreateInstance(Type.GetTypeFromProgID("WMPlayer.OCX.7"));

private void btn1_Click( object Sender, EventArgs e )
{
//@等は付けない。単純にダブルクーテーションで囲う。
//例:"C:/.../.../..../〇〇.mp3";
_wmp.URL = "音源のパス";
_wmp.controls.play ();
}

[STAThread]
static void Main()
{
Wmp tf = new Wmp();
Application.Run( tf );
}
}  
Re: 生放送のものです - 黒味ポロ 2020/06/14 (Sun) 21:17:33
音楽なりました!再生できました!!  
Re: 生放送のものです - 農神トール 2020/06/14 (Sun) 21:22:18
黒神さん。
ありがとうございます。
再生できてるということは、何だろう?他に変なところがあるのか?
多分、黒神さんなら、こっちのソースコードの方が分かり易かなと思ったんですよ。  
Re: 生放送のものです - 農神トール 2020/06/14 (Sun) 21:45:33
え?、「いまさら」って言われるかもしれませんが、
今、改めて貼り付けてもらったソースを見てたんですけど、private void Form〇_Load(object sender, EventArgs e)が3つあるんですよね。

で、ボタンは作ったって記述があるので、これ、正しくはボタンクリックのイベントじゃないのかな?
フォーム1がロードされるとき、フォーム2がロードされるとき、フォーム3がロードされる時に、ミュートやプレイというのも何か違和感が・・・。  
Re: 生放送のものです - 農神トール 2020/06/14 (Sun) 22:30:53
private void Form1_Load(object sender, EventArgs e)は無くてもいいような。

で、private void Form3_Load(object sender, EventArgs e)をprivate void Form1_Load(object sender, EventArgs e)
にして、playflag = 0にする。

private void Form2_Load(object sender, EventArgs e)が、クリックイベントで、private void btn1_click(object sender, EventArgs e)
if (playflag == 0)なので再生されて、playflag =1にする。
もし、再び、btn1がクリックされたら、if (playflag == 0)が偽になるので、ポーズが発動する。
で、playflag =0にする。
これで、一つのボタンクリックで再生とポーズをコントロールかな。

これでいけるような気がするんだが、違うかな?  
Re: 生放送のものです - 農神トール 2020/06/15 (Mon) 00:48:30
先生のコードを併用して組み上げたらこうなった。

ともやさん。黒神さん。ごめんなさい。今回は、私の完全な思い込みでした。
1.学校の先生が書いたコードという事で、その時点で間違いないと思ってしまった事。
2.学校と家で違うところは?音源のパス設定だろうと短絡的に思ってしまい、そこにしか目が行かなかった。
思い込みって怖いなと思います。これで、私の環境で読み込み、playボタンで再生とポーズ切り替えできました。
**************************************************************************************************************
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

class Wmp : Form
{
Wmp()
{
//ボタン関連
Button button1 = new Button();
button1.Text = "PLAY";
Controls.Add( button1 );
button1.Click += new EventHandler( btn1_Click );

//フォーム関連
this.Load += new EventHandler( Wmp_Load );
}

private readonly dynamic _wmp = Activator.CreateInstance(Type.GetTypeFromProgID("WMPlayer.OCX.7"));
private int playflag;

private void Wmp_Load(object sender, EventArgs e)
{
_wmp.URL = "C:/...../...../...../〇〇.mp3";
_wmp.controls.Stop(); //ロードされた時点で再生されてしまうので、強引だが、強制停止
playflag = 0;
}

private void btn1_Click( object Sender, EventArgs e )
{
if (playflag == 0)
{
_wmp.controls.Play();
playflag = 1;
}else
{
_wmp.controls.Pause();
playflag = 0;
}
}

[STAThread]
static void Main()
{
Wmp tf = new Wmp();
Application.Run( tf );
}
}   
Re: 生放送のものです - 黒味ポロ 2020/06/16 (Tue) 06:21:02
なるほど。そういうことだったんですね!僕もてっきり先生が書いたのだからミスはないと思ってました。思い込みって怖い....

ともやさんが今も見てくれているかは分かりませんが、農神トールさんが原因をみつけてくださいました!僕もやっとこのソース理解できたので、もしこれでもできなかったときは多少お手伝いできるかな?と思います。(多分上のソースでできると思うけど..)  
Re: 生放送のものです - 農神トール 2020/06/16 (Tue) 06:52:12
ともやさん。黒神さん。
ごめんなさい。一つ付け加えます。

あくまでも、私のプログラミング環境は、メモ帳+csc.exeです。visual studioではありません。
visual studio側の設定等の可能性は否定できませんし、先生が記述されたコードを否定するわけでもありません。「プロジェクト全体」のソースコードがわからないので。
なので、こういうソースコードでも動作するという程度でお考え下さい。

わたしも、この掲示板は毎日覗いていますよー。黒神さん。管理大変でしょうが、頑張ってください。  
19件省略されています
省略されているメッセージを全て見る
秘伝のパイパン - はままつしおね 2020/06/10 (Wed) 07:32:53
日​サ​ロ​通​い​の​ち​ょ​い​ブ​ス​黒​ギ​ャ​ル​即​ナ​ン​パ​!​ ​ち​ょ​い​ブ​ス​く​ら​い​が​丁​度​い​い​ ​ヤ​リ​マ​ン​ギ​ャ​ル​と​セ​ッ​ク​ス​込​み​の​デ​ー​ト​企​画​!​

https://fc2.anime-navi.net/  
ともやさんへ - 農神トール 2020/06/10 (Wed) 07:06:07
本当に、横やりすみません。
因みに、namespaceを変更してはないですよね?
一度、InitializeComponent();の行をコメントアウトして、リビルドしてみては?  
再生できましたか? - 農神トール 2020/06/08 (Mon) 08:55:33
横やりすみません。
ともやさん。うまくいきましたか?
最低限のソース(以下)をメモ帳にコピペして、cscに参照を加えて、コマンドプロンプトでコンパイルすれば通ります。

class Form1 : Form
{
[STAThread]
static void Main()
{
MediaPlayer mp = new MediaPlayer();
mp.Open( new Uri(@"ファイルパス.mp3" ) );
mp.Play();

Application.Run(new Form1());
}
}

余計なお世話かもしれませんが、黒神さんが、vsをインストールして説明するか、ともやさんが、黒神さんのようにエディとcsc環境でコーディングするのが、一番スムースに説明と理解ができると思いますよ。  
Re: 再生できましたか? - 黒味ポロ 2020/06/09 (Tue) 06:40:29
見るの遅れました。確かにそうですね!ただ、僕の使っているPCのスペック上VSは容量的な問題で入れれなくて...
ともやさんのエラーもVSだからどうこうという問題でもないような気がしたのでそのまま進めてしまっています。  
Re: 再生できましたか? - 農神トール 2020/06/09 (Tue) 06:47:45
黒神さん。
すみません。否定してるわけではないんですよ。私もUmezawa先生の動画(メモ帳でC#)を見て、プログラミングを始めました。
Umezawa先生も言われてますが、視聴者さんが、「画面が違う」、「同じようにしたい」と言われる、という事が頭にあって、土俵を合わせるのが一番かなと思って。
文字だけで説明って難しいですよね。  
Re: 再生できましたか? - 黒味ポロ 2020/06/09 (Tue) 06:53:31
なるほど。ともやさんにはソースを送ってもらってそれを見ようかと思い、そのような趣旨の内容を送ったので、一応VSがなくてもcsファイルを弄ってコンパイルすることは可能なので、それで見てみようかと思います。
アドバイスありがとうございました!もしこれでもできなかったら何とかして一時的にVS入れてみようかと思います!  
Re: 再生できましたか? - 農神トール 2020/06/09 (Tue) 07:01:32
黒神さん。
朝の忙しい時間にすみません。お互い忙しいでしょうから、ここまでにしましょうか。
Umezawa先生の動画内で黒神さんのゲームも見せてもらってますが、中学生ですごいと思ってます。
私はサンデープログラマで、なかなか進展せず、モチベーションの維持が大変です(笑)  
パイパンのロングセラー - あさうみかよ 2020/06/07 (Sun) 15:50:29
円​光​ ​貧​乳​お​っ​ぱ​い​!​ ​可​愛​い​ギ​ャ​ル​J​K​が​援​助​交​際​ ​パ​イ​パ​ン​美​少​女​女​子​校​生​が​フ​ェ​ラ​と​ハ​メ​撮​り​S​E​X​

https://fc2.blog-mmo.com/  
いっちいっちです - シュガー弘 2020/03/26 (Thu) 17:36:16
なんかBANされたシュガーです。
配信内で言ってたウイルス とかは入れてないので安心してね!!

悪意があって配信を見たわけじゃないし...  
Re: いっちいっちです - 黒味ポロ 2020/03/27 (Fri) 10:15:20
このサイトで言われても困ります。僕にはどうもできないしお力になることも敵になることもできません。ただ、「なんかBANされたシュガーです」だと僕がBANしたと間違われてしまう可能性があるので誤解を招くコメントは控えていただけると幸いです。ご理解いただけると幸いです  
Re: いっちいっちです - 黒味ポロ 2020/04/03 (Fri) 20:09:08
あと、そもそも複数アカウント使うのが気持ち悪いです
申し訳ないですが、もうこの掲示板でコメントはシないでいただけますでしょうか  
HPの表示がずれる件 - Hi-Gear 2020/03/28 (Sat) 08:25:21
HPのバーっていうのは緑の四角がずれるのではなく、
ストリングの部分がずれるってことですよね?
俺だったら気付かないようなかすかなずれのことでいいのかな?
Console.WriteLine(m.Width);
っていうのを追加してみたら
m.Widthの値は小数でした。
描画するときには整数にしていると思うので、それで多少ずれているのではないでしょうか?
確信はないですが。  
適当に添削 - あまみ 2020/03/24 (Tue) 20:55:26
https://plan301e.web.fc2.com/test/RPGbattle.cs
たぶんこのままじゃ動かないので見るだけこーど
//*** となってるコメントあたりがなんとなくいいたいこと  
シュガーです。 - シュガー弘 2020/03/20 (Fri) 22:17:24
こんにちは。シュガーヒロシです。分かる人にはわかると思いますが、佐藤が由来です。

花屋のゲーム、とても面白かったです。参考にしてゲームを作ろうと思います。  
Re: シュガーです。 - 黒味ポロ 2020/03/21 (Sat) 09:16:43
花屋をプレイしてくださってありがとうございます!
参考になれば幸いです。今度RPGを作ってみる予定なのでそちらもぜひ遊んでみてください。  
こんばんわ - dvl 2020/03/17 (Tue) 03:31:03
掲示板開設おめです。
拙作「シンプル電卓」のソースを貼っておきます。
HTML + JavaScript のオンラインアプリです。
参考になったら幸いです。

----------------------- ここから

<!DOCTYPE html>
<html lang="ja">

<title>シンプル電卓</title>

<style>
*{
font-family: meiryo, sans-serif;
}
#box{
width: 300px;
margin: 10px auto;
background-color: gray;
padding: 15px;
border: solid 2px black;
border-radius: 8px;
text-align: center;
}
.button{
width: 55px;
height: 55px;
font-size: 33px;
margin: 3px 0px;
}
#monitor{
width: 270px;
height: 55px;
font-size: 29px;
margin: 15px 0px 20px;
padding: 0px 10px;
border: solid 4px black;
border-radius: 6px;
background-color: whitesmoke;
}
</style>

<br>
<div id="box">
<input type="text" id="monitor" value=""><br>
<input type="button" class="button" value="7" onclick="pressed(7)">
<input type="button" class="button" value="8" onclick="pressed(8)">
<input type="button" class="button" value="9" onclick="pressed(9)">
<input type="button" class="button" value="^" onclick="pressed('Pow')">
<input type="button" class="button" value="C" id="clear" onclick="pressed('C')"><br>
<input type="button" class="button" value="4" onclick="pressed(4)">
<input type="button" class="button" value="5" onclick="pressed(5)">
<input type="button" class="button" value="6" onclick="pressed(6)">
<input type="button" class="button" value="÷" onclick="pressed('÷')">
<input type="button" class="button" value="←" onclick="pressed('back')"><br>
<input type="button" class="button" value="1" onclick="pressed(1)">
<input type="button" class="button" value="2" onclick="pressed(2)">
<input type="button" class="button" value="3" onclick="pressed(3)">
<input type="button" class="button" value="×" onclick="pressed('×')">
<input type="button" class="button" value="±" onclick="pressed('pm')"><br>
<input type="button" class="button" value="0" onclick="pressed(0)">
<input type="button" class="button" value="." onclick="pressed('.')">
<input type="button" class="button" value="+" onclick="pressed('+')">
<input type="button" class="button" value="-" onclick="pressed('-')">
<input type="button" class="button" value="=" onclick="pressed('=')"><br>
</div>

<script>
elem = function( id ){
  return document.getElementById( id )
}
clear = function(){
  mode = "edit"
  mon = "0"
}
inputNumber = function( key ){
  if( mon == "0" ) mon = ""
  if( mon.indexOf( ")" ) >= 0 ) mon = ""
  var n = 0
  if( mon.indexOf( "." ) >= 0 ) n += 1
  if( mon.indexOf( "-" ) >= 0 ) n += 1
  if( mon.length - n < 8 ) mon += key
}
inputDot = function(){
  if( mon.indexOf( ")" ) >= 0 ) mon = "0"
  if( mon.indexOf( "." ) < 0 ) mon += "."
}
backSpace = function(){
  var l = mon.length
  if( l > 1 ){
    mon = mon.substr( 0, l - 1 )
  } else{
    mon = "0"
  }
}
signChange = function(){
  mon = String( Number( mon ) * (-1) )
}
operate = function( key ){
  mem = Number( mon )
  mon = key + ")"
  mode = key
}
calculate = function(){
  var n
  if( mode == "+" ) n = mem + Number( mon )
  if( mode == "-" ) n = mem - Number( mon )
  if( mode == "×" ) n = mem * Number( mon )
  if( mode == "÷" ) n = mem / Number( mon )
  if( mode == "Pow" ) n = mem ** Number( mon )
  mon = outputNum( n )
  mode = "done"
}
outputNum = function( n ){
  if( isNaN( n ) ) return "NaN"
  if( n == 0 ) return "0"
  n = Number( n.toExponential( 7 ) )
  var a = Math.abs( n )
  if( a >= 1e-2 && a < 1e4 ){
    return String( n )
  } else{
    return n.toExponential()
  }
}
pressed = function( key ){
  if( key == "C" ) clear()
  if( mode != "done" ){
    if( key == "." ) inputDot()
    if( typeof key == "number" ) inputNumber( key )
    if( mon.indexOf( ")" ) < 0 ){
      if( key == "back" ) backSpace()
      if( key == "pm" ) signChange()
    }
  }
  if( mode == "edit" || mode == "done" ){
    for( var a of opArray ){
      if( key == a ) operate( key )
    }
  } else if( mon.indexOf( ")" ) < 0 ){
    if( key == "=" ) calculate()
    for( var a of opArray ){
      if( key == a ){
        pressed( "=" )
        operate( key )
      }
    }
  }
  elem( "monitor" ).style.textAlign = "right"
  if( mon.indexOf( ")" ) >= 0 ) elem( "monitor" ).style.textAlign = "left"
  elem( "monitor" ).value = mon
}
opArray = [ "+", "-", "×", "÷", "Pow" ]
onload = function(){
  elem( "clear" ).style.color = "red"
  pressed( "C" )
}
</script>

</html>

  
Re: こんばんわ - 黒味ポロ 2020/03/17 (Tue) 10:02:19
dvlさんありがとうございます!HTMLやJavaScriptに手を出すのはまだ先になると思いますが参考にさせていただきます!ありがとうございます!