はじめまして。JAVAスクリプトでプログラミングをはじめようと思っています。
ミニゲーム作品集のような書籍またはWEBページをご存知ありませんでしょうか?

命令(関数)等のポケット本を買ったのですが、具体的な(フロー)流れがわからず、うまくつくれません。

※以前MSX BASICというものを少しやっていたことがあります。

よろしくおねがいします。
効果音等のTIPSもできれば…おねがいいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

自分もN88-BASIC出身!?なのでquick-nonoさんの言っていることがよくわかります。


おしゃっる通り行番号という概念は最近の言語にはありません。
イメージとしてはオンキーゴートゥで良いと思います。
呼び出しは全て関数名で行います。(MSXのGOSUBイメージ)

ただ、JavaScriptがゲームを作るのに適した言語かと聞かれると自分は「適さない」と答えると思います。
Macをお使いとのことですので、自分としてはFLASH5とかお奨めします!
以下にサンプルとして画面表示時とボタン押下時にポップアップを表示するJavaScriptを載せておきます。
それではご健闘をお祈りします。

※テキストファイルに以下を貼り付けてsample.htmlとでもしてブラウザで見てみてください。

<html>
<head>
<script language="JavaScript">
function AAA()
{
alert('画面表示時イベント発生');
}
function BBB()
{
alert('ボタンクリックイベント発生');
}
</script>
</head>
<body onLoad="AAA();">
<form>
<input type="button" value="Click" onClick="BBB();">
</form>
</body>
</html>
    • good
    • 0

サンプルURLを乗せるのを忘れました。


以下はJavaScriptのスロットゲームです。
ブラウザで開いてメニューの
表示→ソース
でソースをみることができます。

参考URL:http://www4.justnet.ne.jp/~worldwar/js/contents/ …
    • good
    • 0

書籍はちょっと分かりませんが、フローについてはアドバイスできます。



まず、MSX BASICを経験されたことがあるようですが、JavaScriptとはかなり違う言語だと思ってください。

MSX BASIC => 開始があって終了まで一連のプログラムが全てつながっている
JavaScrpt => 基本はVisualBasicなどと同じ「イベントドリブン方式」
       ※イベントドリブン以外でも使えないこともないですが・・

マウスをクリックした、キーボードを押したなどなど・・
これらのイベントでプログラムが動きます。
処理フローだけということでしたら、本屋さんなどでVisualBasicの本を参考にするのも良いと思います。(命令は若干違いますが考え方は似ています)

参考URL:http://cgi.annie.ne.jp/%7Ehalpin/question/index. …

この回答への補足

お返事ありがとうございます。
VBですか…
かなしいかな、Macしか所有していないものですから…

説明から察するに、MSX命令のオンキー ゴウトゥのような「キーが押されたら、何かを処理する」…ということなのでしょうか。

でも、行番号もないのに、どこの処理に飛ぶんでしょう?

イベントがおこったら、処理を実行する。というのは解ったのですけれど…。

補足日時:2001/07/30 12:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qスクリプト内から他の外部スクリプトを読み込みたい

Java Script初級者です。
外部スクリプト内から他の外部スクリプトを読み込むことは可能ですか?

実現したい内容はスクリプト内の関数から▼下のような感じで外部ファイルを読み込むことです。
function check(fm) {
<script language="JavaScript" src="AAA.js"></script>
}

何か良い方法がありましたらぜひ教えてください。

Aベストアンサー

え~と、細切れに書いたことをまとめますと
以下のようになります。
これで、動くはず・・・・・

<html>

<head>

<script>

function dynamicLoad(jsFileName){
var now =new Date();
var getData =jsFileName+'?nc='+now.getTime();
if(document.all){
if(navigator.userAgent.indexOf("Win")!=-1){
eval(document.all('dynld')).src = getData;
}else if(navigator.userAgent.indexOf("Mac")!=-1){
document.body.insertAdjacentHTML('BeforeEnd','<scr'+'ipt src="'+getData+'"><scr'+'ipt/>');
}
}else if(document.getElementById){
var cnode=document.getElementById('dynld');
var nnode=document.createElement('script');
nnode.src=getData;
nnode.id ='dynld';
cnode.parentNode.replaceChild(nnode,cnode);
}else{
if(document.images){
var datasrc=new Image();
datasrc.src=getData;
location.href=datasrc.src;
}
}
}

function check() {
if(document.images["soldout"]){
alert("完売しました!");
return false;
}else if(!document.forms[0].size.selectedIndex) {
alert("サイズを選択してください!");
return false;
}else {
//
//Google Code for Purchase Conversion Page
//
 var google_conversion_id=1071970427;
 var google_conversion_language="ja";
 var google_conversion_format="1";
 var google_conversion_color="FFFFFF";
 if(1){var google_conversion_value=1;}
 var google_conversion_label="Purchase";
 dynamicLoad('http://bosan.net/test2/test2.js');
//
//Overture Services Inc. 07/15/2003
//
 var cc_tagVersion = "1.0";
 var cc_accountID = "123456789";
 var cc_marketID = "4";
 var cc_protocol="http";
 var cc_subdomain = "convctr";
 if(location.protocol == "https:"){
 cc_protocol="https";
 cc_subdomain="convctrs";
 }
 var cc_queryStr = "?" + "ver=" + cc_tagVersion + "&aID=" + cc_accountID + "&mkt=" + cc_marketID +"&ref=" + escape(document.referrer);
 var cc_imageUrl = cc_protocol + "://" + cc_subdomain + ".overture.com/images/cc/cc.gif" + cc_queryStr;
 var cc_imageObject = new Image();
 cc_imageObject.src = cc_imageUrl;
//
//外部との通信完了後に送信するために送信遅延時間を設定
//
 setTimeout("xx()",2000);//この時間を調整2000は2秒の意味
}
}

function xx(){
document.forms[0].submit();
}

document.write('<scr'+'ipt id="dynld"></scr'+'ipt>');

</script>

<head>

<boy>

<form action="about:blank" method="POST">
<select name="size">
<option>▼選択</option>
<option>10cm</option>
<option>20cm</option>
</select>
<input type="button" value="買い物かごに入れる" onclick="check()" />
</form>

</body>

</html>





.

え~と、細切れに書いたことをまとめますと
以下のようになります。
これで、動くはず・・・・・

<html>

<head>

<script>

function dynamicLoad(jsFileName){
var now =new Date();
var getData =jsFileName+'?nc='+now.getTime();
if(document.all){
if(navigator.userAgent.indexOf("Win")!=-1){
eval(document.all('dynld')).src = getData;
}else if(navigator.userAgent.indexOf("Mac")!=-1){
document.body.insertAdjacentHTML('BeforeEnd','<scr'+'ipt src="'+getData+'"><scr'+'ipt/...続きを読む

Qパスワード制限スクリプト。ウィンドウを閉じるスクリプトについて

WEBページにパスワード制限をかけたいと思います。
今回JavaScriptなので、めちゃめちゃ強固なものではありませんが。

下のようなスクリプトを用意しました。
------------------------

pass = prompt("パスワードを入力して下さい","");
if(pass != "XXXXX") {
parent.top.window.close();
}

------------------------

これでも動くのですが、
パスワードが不正なとき、画面を閉じようとする設計です。
ただし、その時IEだと、
「画面を閉じようとしています」と聞かれ、
「はい」「いいえ」の選択肢がでます。

「はい」・・・もちろん閉じます。
「いいえ」・・画面そのまま残ります。

これじゃ意味ないんです。
「いいえ」を選んでもとにかく閉じさせる方法が必要なんです。

「いいえ」を選択しても、繰り返し繰り返し「閉じようとしています」と聞かれるような。
なにかいいスクリプトはないでしょうか?

WEBページにパスワード制限をかけたいと思います。
今回JavaScriptなので、めちゃめちゃ強固なものではありませんが。

下のようなスクリプトを用意しました。
------------------------

pass = prompt("パスワードを入力して下さい","");
if(pass != "XXXXX") {
parent.top.window.close();
}

------------------------

これでも動くのですが、
パスワードが不正なとき、画面を閉じようとする設計です。
ただし、その時IEだと、
...続きを読む

Aベストアンサー

parent.top.window.close();
と記述してありますので、おそらくフレームを利用した画面構成なのだと思います。
記憶違いでなければ、IEの仕様でダイアログが表示され
ることがあったと思いますので、この辺りを調べれば
いいアイデアが見つかるのでは?
# 外したらごめんなさい

余談ですが:
JavaScriptでパスワードチェックを行うようであれば、MD5やSH-1などのハッシュ値を利用した方が、今より安全性を考慮した作りになりますよ。

QAJAX→PHP -DB(MySQL)- PHP→AJAXのフローについて

Yahoo! User Interface の DataTable Control を使った編集可能なリスト作成を考えています。
しかし、Ajaxでの入力値のPHPへの投げ方、また、DBから受け取った値をAjax(DataTable Control)で表示させる方法とも、やり方が全くわかりません…。
(Jasonという形式に成型して出力させる??)

YUIを使用して外部テキストファイルを表示してみたりアニメーションを動かしてみたり、Ajax初心者なりに1ヶ月ぐらい試みてみましたが、DataTable Controlについては今のところ全く成果なしで困り果てています…。

どなたか勘所のある方、ご教示頂けませんでしょうか?
宜しくお願いします。
http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html

Aベストアンサー

すみません、Inlineで編集できることは知りませんでした。

セルをクリックした時に入力欄が表示されますが、それはinputタグです。
firebugで確認してみると、クリック時にbodyタグの直下にinputタグが生成されています。
なので、データの編集にinputタグを使っていないわけではありません。

サンプルでは、データを編集して「OK」ボタンを押すとテーブルが更新されますが、
この時に非同期通信でPHPにデータを送信してMySQLのデータを更新してやれば良いと思います。

yuiのdatatable-beta.jsを見てみると、「OK」ボタンをクリックした時に
editorSaveEvent というイベントが発生するようになっているので、
次のようにイベントハンドラを追加します。
(ここでは、サンプルのコードで使われている変数名を使います。)

this.myDataTable.subscribe("editorSaveEvent", updateDataSource);

updateDataSource関数は自分で作った関数で、この中に非同期通信の処理を記述します。

function updateDataSource(oArgs) {
// 編集後の値はoArgs.newDataに格納されています
// 編集したセルの列名はoArgs.editor.column.getKey()で取得できます
// 編集したセルのレコードの各値はoArgs.editor.record.getData()で取得できます(MySQLのデータを更新するのに必要になってくると思います)
// POSTで送信するデータをqueryに入れて…
YAHOO.util.Connect.asyncRequest( "POST", url, callback, query );
}

順序が逆になってしまいましたが、PHPからデータを取得して表示させる方法は下記のページを参考にしてみてください。
http://developer.yahoo.com/yui/examples/datatable/dt_xhrjson_clean.html
ご存知かもしれませんが、PHPでJSONを生成するにはjson_encode()関数が便利です。

ここではJavaScriptのコードをあまり書きませんでしたが、
簡単なものだと40行ぐらいで書けたので、オブジェクトの中身を
firebugで根気強くデバッグしながらいろいろ書いて試してみてください。

すみません、Inlineで編集できることは知りませんでした。

セルをクリックした時に入力欄が表示されますが、それはinputタグです。
firebugで確認してみると、クリック時にbodyタグの直下にinputタグが生成されています。
なので、データの編集にinputタグを使っていないわけではありません。

サンプルでは、データを編集して「OK」ボタンを押すとテーブルが更新されますが、
この時に非同期通信でPHPにデータを送信してMySQLのデータを更新してやれば良いと思います。

yuiのdatatable-beta.jsを見て...続きを読む

QJavascriptで二つ以上の命令

if( ) { }のような括弧の中に二つ以上の命令を入れるのは不可能でしょうか??

例えば100g未満は300円
100g以上200g未満は500円
   200g以上300g未満は750円
   300g以上500g未満は1000円

このような計算で

var omosa ;
var nedan ;

if(omosa<100) {nedan = 300};
if(omosa<200 , omosa>=100) {nedan = 500};
if(omosa<300 , omosa>=200) {nedan = 750};
if(omosa<500 , omosa>=300) {nedan = 1000};
if(omosa>500) {alert("許容限界を超えています") };

body部分で
<INPUT NAME="nedan">

としましたがうまくいきませんが、このような場合どのようなプログラムをすればいいのか教えていただけませんか??

Aベストアンサー

var omosa, nedan;
if(omosa < 100){ nedan = 300;}
elseif(omosa < 200){ nedan = 500; }
elseif(omosa < 300){ nedan = 750; }
elseif(omosa < 500){ nedan = 1000;}
else{ alert("許容範囲を越えています。"); }

ifの式の使い方自体が間違えていますね。

えっと、二つの条件を使うのであれば、
if((omosa<200)&&(omosa>=100)){nedan = 500;}
かな。
最近使ってないので自信ないですが。

Qインラインフレームに命令を送りたい

初歩的な質問ですみません。

インラインフレームに命令(関数など)を送りたいのですが、どのようにすればよいのでしょうか。本を見ながらいろいろ試しているのですがうまくいきません。iframeのIDや名前は必要に応じてつけてもらってかまいません。

よろしくお願いします

Aベストアンサー

質問が漠然としすぎて
何を答えればいいのか良いのか判らないですw

取あえずIFRAMを操作するサンプルを・・

<script type="text/javascript">
function changeCol(){
R=Math.floor(Math.random()*0xFF).toString(16);
if(R.length<2)R="0"+R;
G=Math.floor(Math.random()*0xFF).toString(16);
if(G.length<2)G="0"+G;
B=Math.floor(Math.random()*0xFF).toString(16);
if(B.length<2)B="0"+B;
window.parent.f.document.bgColor="#"+R+G+B;
}
function changeChar(){
Ary=["A","B","C","D","E","F","G","H","I","J"];
x=Math.floor(Math.random()*Ary.length);
str="";
for(i=0;i<300;i++){
str+=Ary[x];
if((i+1)%30==0)str+="<br>"
}
window.parent.f.document.body.innerHTML=str;
}
</script>
<body>
<input type="button" value="背景色変更" onclick="changeCol()" />
<input type="button" value="文字変更" onclick="changeChar()" />

<br>
<iframe name="f" src="about:blank" style="width:400px;height:250px;"></ifram>
</body>


ボタンを何度か続けて押してみて・・

.

質問が漠然としすぎて
何を答えればいいのか良いのか判らないですw

取あえずIFRAMを操作するサンプルを・・

<script type="text/javascript">
function changeCol(){
R=Math.floor(Math.random()*0xFF).toString(16);
if(R.length<2)R="0"+R;
G=Math.floor(Math.random()*0xFF).toString(16);
if(G.length<2)G="0"+G;
B=Math.floor(Math.random()*0xFF).toString(16);
if(B.length<2)B="0"+B;
window.parent.f.document.bgColor="#"+R+G+B;
}
function changeChar(){
Ary=["A","B","C","D","E"...続きを読む


人気Q&Aランキング

おすすめ情報