約 2,658,184 件
https://w.atwiki.jp/nippont/pages/50.html
At the time, Korea was annexed to Japan. Korea became a district of Japan.(reference “no incursion but annexation”) 1960 Summary of “Ministry of Foreign Affairs Japan announcement collection" issued on February 1960 One million Korean at the Beginning of WW2(1939~1945), 2 million at just before the end of war. Koreans came to Japan to find a job on their own accord. This means they are migrant workers and their children. By National mobilization order, only small numbers of people was pressed into service but they received guaranteed compensation. Additionally, Koreans became workers by mobilization only for a short period (September 1944~March 1945). After the end of war, between August 1945 and March 1946, About 900 000... returned by boat which is arranged by the Japanese government. About 500 000... returned individually. Total 1400 000 Koreans returned to Korean peninsula. Demobilized soldiers, army civilian employees, mobilized workers could received the facilities preferentially for reverse migration. (This means, mobilized Koreans could receive priority to return to Korean peninsula) 1946 In March 1946, General Douglas MacArthur ordered the Japanese government to research if Koreans remaining in Japan wished to return to Korean peninsula. Remaining Korean.... about 650 000 Wish to return.... about 500 000 Wish to remain(!?).... about 150 000(!?) In fact, about 800 000 returned to Korean peninsula. Still remaining.... about 570 000 They decided to remain in Japan by their own request. June 25 1950 ~ July 27 1953 During the Korean war (June 25 1950 ~ July 27 1953) no repatriation program. After the cease-fire agreement ~ the end of 1958, To South Korea.... a few thousand Koreans Regular liner was available. To North Korea.... (estimated) a few thousand Koreans No liner was available. Probably they would return at their own expense via Hong Kong. Most of Koreans, who decided to remain in Japan, were already in Japan earlier than the war. Only small group of Koreans, who came to Japan as Demobilized soldiers, army civilian employees, mobilized workers during the war time, decided to remained in Japan. 1947 In March 1947, General MacArthur ordered repatriation program to North Korea. (the program was agreed between USA and Soviet) 10 000 applied for the program.... But actually only 350 returned. Number of Koreans who came to Japan as Demobilized soldiers, army civilian employees, mobilized workers during the war time, still remained in Japan Registered Korean around February 1960, 610 000 Foreign Ministry s new research result about reason for stay 245 After the war, Japan always arranged repatriation program for Koreans, actually many Koreans returned. Koreans, including 245 Korean who came to Japan as Demobilized, still stay in Japan from their own motive. (They wished to stay in Japan) Japanese government never forced Koreans, except criminals, to stay in Japan. A lot of testaments about smuggling in Japan. This is one of those documents. Pre-war Korean living in Japan related newspaper article search (only Japanese available) http //www.zinbun.kyoto-u.ac.jp/~mizna/shinbun/shinbun.html 1200 appropriate references are listed when you search for articles written about "smuggling". On 18 June 1995, the diet record tells that many Koreans slip into Japan in every conceivable way. But Korean want to stay in Japan even though they are apprehended and deported. Worst of all, even South Korean government rejects forcefully repatriated Koreans. House of Representatives record the 22nd diet Committee on Judicial Affairs No.23 http //kokkai.ndl.go.jp/SENTAKU/syugiin/022/0488/02206180488023a.html modified 090513104352
https://w.atwiki.jp/azounoman/pages/8.html
1129 Channel Allocation 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1129 注意 隣接関係は対称的になっていると注釈がありますが,入力は必ずしもそうなっていません.AがBに隣接しているという入力があれば,BがAに隣接しているという情報を自分で補ってやる必要があります. 解答方針 平面グラフであるという注釈があるので,四色定理により必要なチャンネル数は4以下になることを利用します. 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); if(n==0) break; boolean[][] adj = new boolean[n][n]; for(int i=0;i n;i++) Arrays.fill(adj[i],false); for(int i=0;i n;i++){ String line = sc.next(); for(int j=2;j line.length();j++){ int c = line.charAt(j)- A ; adj[i][c] = true; adj[c][i] = true; } } if(colorable1(adj,n)) System.out.println("1 channel needed."); else if(colorable2(adj,n)) System.out.println("2 channels needed."); else if(colorable3(adj,n)) System.out.println("3 channels needed."); else System.out.println("4 channels needed."); } } public static boolean colorable1(boolean[][] adj,int n){ for(int i=0;i n;i++){ for(int j=i+1;j n;j++){ if(adj[i][j]) return false; } } return true; } public static boolean colorable2(boolean[][] adj,int n){ int[] col = new int[n]; return colorable2(adj,n,col,0); } public static boolean colorable2(boolean[][] adj,int n,int[] col,int k){ if(k==n) return true; col[k] = 0; boolean cont = false; for(int i=0;i k;i++){ if(adj[i][k] col[i]==col[k]){ cont = true; break; } } if(!cont){ if(colorable2(adj,n,col,k+1)) return true; } col[k] = 1; cont = false; for(int i=0;i k;i++){ if(adj[i][k] col[i]==col[k]){ cont = true; break; } } if(!cont){ if(colorable2(adj,n,col,k+1)) return true; } return false; } public static boolean colorable3(boolean[][] adj,int n){ int[] col = new int[n]; return colorable3(adj,n,col,0); } public static boolean colorable3(boolean[][] adj,int n,int[] col,int k){ if(k==n) return true; col[k] = 0; boolean cont = false; for(int i=0;i k;i++){ if(adj[i][k] col[i]==col[k]){ cont = true; break; } } if(!cont){ if(colorable3(adj,n,col,k+1)) return true; } col[k] = 1; cont = false; for(int i=0;i k;i++){ if(adj[i][k] col[i]==col[k]){ cont = true; break; } } if(!cont){ if(colorable3(adj,n,col,k+1)) return true; } col[k] = 2; cont = false; for(int i=0;i k;i++){ if(adj[i][k] col[i]==col[k]){ cont = true; break; } } if(!cont){ if(colorable3(adj,n,col,k+1)) return true; } return false; } }
https://w.atwiki.jp/eriax/pages/121.html
制限 セクション構造からのアウトライン抽出は HTML 4.4.11.1 に準拠。効率は考慮外。 Microdata アイテム抽出は HTML 5.2.5, 5.5.1 に準拠。ただし絶対 URI のチェックはしない。 どちらも抽出するだけ。 使用例 アウトライン var hapi = HTML_Outlines_and_Microdata_for_HTML_Browsers; // 文字列として確認 alert(hapi.createOutlineString(document)); // ul 要素を生成 var toc = hapi.createOutlineList(document); Microdata var hapi = HTML_Outlines_and_Microdata_for_HTML_Browsers; // 文書内のアイテムを JSON で抽出 var items = hapi.findAllItems(document); var jsonData = JSON.stringify(items); ソースコード if ( undefined === typeof Array.prototype.map) { Array.prototype.map = function (callbackfn) { var thisArg = arguments[1]; var result; var count; var i; if ( function !== typeof callbackfn) { throw new Error; } count = this.length; result = new Array(count); for (i = 0; i count; i++) { if (i in this) { result[i] = callbackfn.call(thisArg, this[i], i, this); } } return result; }; } if ( undefined === typeof Array.prototype.indexOf) { Array.prototype.indexOf = function (ceil, floor) { return function (searchElement) { var fromIndex = arguments[1]; var count = this.length; var i = Number(fromIndex) || 0; i = (i 0) ? ceil(i) floor(i); if (i 0) { i += count; } for (; i count; i++) { if (i in this) { if (this[i] === searchElement) { return i; } } } return -1; }; }(Math.ceil, Math.floor); } if ( undefined === typeof Array.prototype.filter) { Array.prototype.filter = function (callbackfn) { var thisArg = arguments[1]; var result; var count; var i; var v; if ( function !== typeof callbackfn) { throw new Error; } count = this.length; result = new Array; for (i = 0; i count; i++) { if (i in this) { if (callbackfn.call(thisArg, v = this[i], i, this)) { result[result.length] = v; } } } return result; }; } //////////////////////////////////////////////////////////////////////// var HTML_Outlines_and_Microdata_for_HTML_Browsers = new function () { /*@cc_on@*/ ////////////////////// // Outlines // var isSectioningContent = function () { var Names = /^(? section|nav|article|aside)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isSectioningRoot = function () { var Names = /^(? body|blockquote|details|fieldset|figure|td)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isHeadingContent = function () { var Names = /^(? h[1-6]|hgroup)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isHeadingGroupContent = function () { var Names = /^hgroup$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var getLevel = function (elt) { if (isHeadingGroupContent(elt)) { return getHeadingGroupLevel(elt); } return getSingleHeadingLevel(elt); }; var getSingleHeadingLevel = function (elt) { return parseInt(elt.tagName.slice(-1)); }; var getHeadingGroupLevel = function (elt) { var maxLevel = Infinity; var currentLevel; var nodes = elt.childNodes; var node; var i; for (i = 0; node = nodes[i++];) { if (isHeadingContent(node)) { currentLevel = getSingleHeadingLevel(node); if (currentLevel maxLevel) { maxLevel = currentLevel; } } } return maxLevel; }; // function HTMLOutlinee(arg) { if (arguments.length 0) { if (arg) { var p; for (p in arg) { if (arg.hasOwnProperty(p)) { this[p] = arg[p]; } } } } } HTMLOutlinee.create = function (element) { return new HTMLOutlinee({ element element, sections [], parent null }); }; HTMLOutlinee.prototype = new function () { this.element = null; this.sections = null; this.parent = null; this.type = #outlinee ; this.addSection = function (section) { this.sections.push(section); section.outlinee = this; return section; }; this.getFirstSection = function () { return this.sections[0]; }; this.getLastSection = function () { var sections = this.sections; return sections[sections.length - 1]; }; this.toString = function () { return [object HTMLOutlinee] ; }; }; function HTMLSection(arg) { if (arguments.length 0) { if (arg) { var p; for (p in arg) { if (arg.hasOwnProperty(p)) { this[p] = arg[p]; } } } } } HTMLSection.create = function (heading, parent, outlinee) { return new HTMLSection({ heading heading, parent parent, children [], outlinee outlinee, associated [] }); }; (function () { this.heading = null; this.parent = null; this.children = null; this.outlinee = null; this.associated = null; this.type = #section ; this.appendChild = function (div) { this.children.push(div); div.parent = this; return div; }; this.hasChildSections = function () { var nodes = this.children; var nodeCount = nodes.length; var i; for (i = 0; i nodeCount; i++) { if (nodes[i] instanceof HTMLSection) { return true; } } return false; }; this.getLastSection = function () { var nodes = this.children; var nodeCount = nodes.length; var node; var i; for (i = nodeCount; i 0;) { node = nodes[i -= 1]; if (node instanceof HTMLSection) { return node; } } return null; }; this.associate = function (node) { this.associated.push(node); return node; }; this.toString = function () { return [object HTMLSection] ; }; }).call(HTMLSection.prototype); function createOutlinee(root) { var currentOutlinee = null; var currentSection = null; var stack = []; (function (root, callbackfn) { var node = root; var n; while (node) { callbackfn(node, enter ); if ((n = node.firstChild)) { node = n; continue; } do { callbackfn(node, exit ); if (node == root) { node = null; break; } if ((n = node.nextSibling)) { node = n; break; } } while ((node = node.parentNode)) } })(root, function (node, mode) { var top = stack[stack.length - 1]; if (top === node mode === exit ) { stack.pop(); } else if (isHeadingContent(top)) { ; } else if (mode === enter (isSectioningContent(node) || isSectioningRoot(node))) { if (currentOutlinee !== null currentSection.heading === null) { currentSection.heading = undefined; } if (currentOutlinee !== null) { stack.push(currentOutlinee); } currentOutlinee = HTMLOutlinee.create(node); currentSection = HTMLSection.create(null, currentSection, currentOutlinee); currentOutlinee.addSection(currentSection); } else if (mode === exit (isSectioningContent(node) stack.length 0)) { var outlinee = currentOutlinee; currentOutlinee = stack.pop(); currentSection = currentOutlinee.getLastSection(); currentSection.appendChild(outlinee); } else if (mode === exit (isSectioningRoot(node) stack.length 0)) { var outlinee = currentOutlinee; currentOutlinee = stack.pop(); currentSection = currentOutlinee.getLastSection(); while (currentSection.hasChildSections()) { currentSection = currentSection.getLastSection(); } currentSection.appendChild(outlinee); } else if (mode === exit (isSectioningContent(node) || isSectioningRoot(node))) { currentSection = currentOutlinee.getFirstSection(); } else if (currentOutlinee === null) {} else if (mode === enter isHeadingContent(node)) { if (currentSection.heading == null) { currentSection.heading = node; } else if (getLevel(node) = getLevel(currentOutlinee.getLastSection().heading)) { currentSection = currentOutlinee.addSection(HTMLSection.create(node, currentSection.parent, currentOutlinee)); } else { var candidateSection = currentSection; while (true) { if (getLevel(node) getLevel(candidateSection.heading)) { currentSection = candidateSection.appendChild(HTMLSection.create(node, candidateSection.parent, currentOutlinee)); break; } var newCandidateSection = candidateSection.parent; candidateSection = newCandidateSection; } } stack.push(node); } else {} if (mode === exit currentSection !== null) { currentSection.associate(node); } }); if (currentOutlinee === null) { return null; } return currentOutlinee; } var getTextContent = function (n) { switch (n.nodeType) { case 1 if (/^img$/i.test(n.nodeName)) { return n.alt; } if (/^input$/i.test(n.nodeName)) { return n.value; } return Array.prototype.concat.apply([], Array.prototype.map.call(n.childNodes, arguments.callee)).join( ); case 3 case 4 return n.data; default return ; } }; (function () { this.isSectioningRoot = function () { return isSectioningRoot(this.element); }; this.hasEffectiveSections = function () { var sections = this.sections; var section; switch (sections.length) { case 0 return false; case 1 return sections[0].isEffectiveSection(); default return true; } }; this.toJSON = function (internal) { var children = []; var sections = this.sections; var sectionCount = sections.length; var i; for (i = 0; i sectionCount; i++) { children = children.concat(sections[i].toJSON(true)); } if (internal !this.isSectioningRoot()) { return children; } return { type #root , context this.element.tagName, children children }; }; }).call(HTMLOutlinee.prototype); (function () { this.isEffectiveSection = function () { return isSectioningContent(this.outlinee.element) || this.hasChildSections() || this.heading !== null; }; this.toJSON = function () { var heading = this.heading; var tagName = this.outlinee.element.tagName; var id; var label; if (heading) { id = heading.id; label = getTextContent(heading); } else { if (heading === null) { label = (anonymous\x20 + tagName + ) ; } else { label = (undefined\x20 + tagName + ) ; } } var children = this.children; var childCount = children.length; var result = []; var i; for (i = 0; i childCount; i++) { result = result.concat(children[i].toJSON(true)); } return { context tagName, type #section , id id, label label, children result }; }; }).call(HTMLSection.prototype); // var outlineToList = function (jsonData, params) { var doc = params.ownerDocument; var list0 = doc.createElement(params.tagName || ul ); var item0 = doc.createElement( li ); var frag0 = doc.createDocumentFragment(); item0.appendChild(doc.createElement( a )).appendChild(doc.createTextNode( _ )); return (function (data) { var list; var item; var frag = frag0.cloneNode(false); var children = data.children; var childCount = children.length; var child; var i; var n; var s; if (childCount 0) { for (i = 0; i childCount; i++) { child = children[i]; item = item0.cloneNode(true); n = item.firstChild; if (child.type === #section ) { if ((s = child.id)) { n.href = # + encodeURIComponent(s); } n.firstChild.data = child.label; frag.appendChild(item); frag.appendChild(arguments.callee(child)); } } list = list0.cloneNode(false); list.appendChild(frag); } else { list = frag; } return list; })(jsonData); }; this.createOutlineList = function (root, doc) { var outlinee = createOutlinee(root); if (!doc) { doc = (root.nodeType === 9) ? root root.ownerDocument; } return outlineToList(outlinee.toJSON(), { ownerDocument doc, tagName ul }); }; var outlineToString = function (jsonData, level) { var tab = 2; if (!level) { level = 1; } var padding; var result = []; if (jsonData.type === #root ) { padding = new Array(level).join( \x20\x20 ) + = ; result.push(padding + [ + jsonData.context + ] ); level += tab; } var children = jsonData.children; var childCount = children.length; var child; var i; var c; if (childCount 0) { padding = new Array(level).join( \x20\x20 ) + + ; for (i = 0; i childCount; i++) { child = children[i]; if (child.type === #section ) { result.push(padding + [ + child.context + ] + child.label.replace(/^\s+|\s+$/g, ).replace(/(? \r\n|\r|\n)+/g, -- ).replace(/\s{2,}/g, \x20 )); } if ((c = arguments.callee(child, level + tab))) { result.push(c); } } } return result.join( \n ); }; this.createOutlineString = function (root) { var outlinee = createOutlinee(root); return outlineToString (outlinee.toJSON()); }; ////////////////////// // Microdata // var findItemProperties = function (root) { var push = Array.prototype.push; var filter = Array.prototype.filter; var isElement = function (n) { return n.nodeType === 1; }; var results = []; var memory = []; var pending = []; results.push(root); push.apply(pending, filter.call(root.childNodes, isElement)); /*@if(1)var a;if((a=root.getAttributeNode( itemref )) a.specified){@else@*/ if (root.hasAttribute( itemref )) { /*@end@*/ var refs; var TrailWS = /^\s+|\s+$/g; var WS = /\s+/; if ((refs = root.getAttribute( itemref /*@,0@*/)) (refs = refs.replace(TrailWS, ))) { refs = refs.split(WS); var refCount = refs.length; var doc = root.ownerDocument; var m; var i; for (i = 0; i refCount; i++) { if ((m = doc.getElementById(refs[i]))) { pending.push(m); } } } } while (pending.length 0) { var current = pending.shift(); if (memory.indexOf(current) = 0) { continue; } memory.push(current); /*@if(1)var a;if(!(a=current.getAttributeNode( itemscope ))||!a.specified){@else@*/ if (!current.hasAttribute( itemscope )) { /*@end@*/ push.apply(pending, filter.call(current.childNodes, isElement)); } /*@if(1)var a;if((a=current.getAttributeNode( itemprop )) a.specified){@else@*/ if (current.hasAttribute( itemprop )) { /*@end@*/ results.push(current); } } if ( undefined !== typeof root.compareDocumentPosition) { results.sort(function (e1, e2) { if (e1.isSameNode(e2)) { return 0; } if (0 !== (e1.compareDocumentPosition(e2) Node.DOCUMENT_POSITION_FOLLOWING)) { return -1; } return 1; }); } else { /*@if(1)results.sort(function(e1,e2){return e1.sourceIndex-e2.sourceIndex});@else@*/ var r1 = root.ownerDocument.createRange(); var r2 = root.ownerDocument.createRange(); results.sort(function (e1, e2) { r1.selectNode(e1); r2.selectNode(e2); return r1.compareBoundaryPoints(Range.START_TO_START, r2); }); /*@end@*/ } return results; }; var findAllItems_JSON = function (root) { var result = {}; var items = []; var elems = root.getElementsByTagName( * ); var elemCount = elems.length; var elem; var i; for (i = 0; i elemCount; i++) { elem = elems[i]; /*@if(1)var a;if(elem.nodeType===1 (a=elem.getAttributeNode( itemscope )) a.specified){@else@*/ if (elem.hasAttribute( itemscope )) { /*@end@*/ items.push(getObject_JSON(elem, [])); } } result[ items ] = items; return result; }; var getObject_JSON = function (item, memory) { var result = {}; memory.push(item); /*@if(1)var a;if((a=item.getAttributeNode( itemtype )) a.specified){@else@*/ if (item.hasAttribute( itemtype )) { /*@end@*/ result[ type ] = item.getAttribute( itemtype /*@,0@*/ ); } /*@if(1)var a;if((a=item.getAttributeNode( itemid )) a.specified){@else@*/ if (item.hasAttribute( itemid )) { /*@end@*/ result[ id ] = item.getAttribute( itemid /*@,0@*/ ); } var properties = {}; var elems = findItemProperties(item); var elemCount = elems.length; var elem; var i; var TrailWS = /^\s+|\s+$/g; var WS = /\s+/; for (i = 0; i elemCount; i++) { elem = elems[i]; /*@if(1)var a;if(!(a=elem.getAttributeNode( itemprop ))||!a.specified){@else@*/ if (!elem.hasAttribute( itemprop )) { /*@end@*/ continue; } var names = elem.getAttribute( itemprop /*@,0@*/ ).replace(TrailWS, ); if (!names) { continue; } names = names.split(WS); var value; /*@if(1)var a;if((a=elem.getAttributeNode( itemscope )) a.specified){@else@*/ if (elem.hasAttribute( itemscope )) { /*@end@*/ if (memory.indexOf(elem) 0) { value = getObject_JSON(elem, memory); } else { value = ERROR ; } } else { switch (elem.tagName.toUpperCase()) { case META value = elem.content || ; break; case EMBED case IFRAME case IMG value = elem.src || ; break; case AUDIO case SOURCE case TRACK case VIDEO value = elem.src; if ( undefined === typeof value) { value = elem.getAttribute( src /*@,0@*/ ) || ; } break; case A case AREA case LINK value = elem.href; break; case OBJECT value = elem.data; break; case TIME value = elem.dateTime; if ( undefined === typeof value) { value = elem.getAttribute( datetime /*@,0@*/ ) || ; } break; default /*@if(1)var s;if( undefined !==typeof(s=elem.innerText)){value=s}@else@*/ value = elem.textContent; /*@end@*/ break; } } var nameCount = names.length; var name; var j; for (j = 0; j nameCount; j++) { name = names[j]; if (properties.hasOwnProperty(name)) { properties[name].push(value); } else { properties[name] = [value]; } } } result[ properties ] = properties; return result; }; this.findAllItems = findAllItems_JSON; }; 初出 2011-09-04/05 修正 2012-03-05
https://w.atwiki.jp/from0/pages/33.html
問題を定義する (x, y) で表される点と (x1 + t*dx1, y1 + t*dy1) から (x2 + t*dx2, y2 + t*dy2) への線分 の交わる t を求める。 ただし2回交わるときは0位上の小さい方を使う。 問題を整理する x - (x1 + t*dx1) y - (y1 + t*dy1 = (x2 + t*dx2) - (x1 + t*dx1) (y2 + t*dy2) - (y1 + t*dy1 外項の積は内項の積 (x - (x1 + t*dx1))*(*1) = (y - (y1 + t*dy1))*(*2) a = (dy1*dx2 - dx1*dy2) b = (dy2*x - dy1*x + dx1*y - dx2*y + dy1*x2 + y1*dx2 - dx1*y2 - x1*dy2) c = y2*x - y1*x + x1*y - x2*y + y1*x2 - x1*y2 = 0 とすると a*t*t + b*t + c = 0 となるので、解の公式が使える。 例外的な状況 a=0 の場合は解の公式が使えない。 実装 というわけで以下のようなコードになる。 double annexation(double x, double y, double x1, double y1, double dx1, double dy1, double x2, double y2, double dx2, double dy2) { double a = dy1*dx2 - dx1*dy2; double b = dy2*x - dy1*x + dx1*y - dx2*y + dy1*x2 + y1*dx2 - dx1*y2 - x1*dy2; double c = y2*x - y1*x + x1*y - x2*y + y1*x2 - x1*y2; if (a == 0) { // t*b + c = 0 if (b != 0) { return NAN; } return - c / b; } double s = b*b - 4*a*c; if (s = 0) { return NAN; } double r = sqrt(s); double t1 = (- b + r) / (2*a); double t2 = (- b - r) / (2*a); if (t1 t2) { if (t2 0) { return NAN; } if (t1 0) { return t2; } return t1; } else { if (t1 0) { return NAN; } if (t2 0) { return t1; } return t2; } }
https://w.atwiki.jp/digicre/pages/23.html
再帰関数とは、自分自身を関数定義内で再び呼び出す関数のことです。言葉だと分かりにくいですので、代表的な例をいくつか挙げたいと思います。 例1 階乗を求めるプログラム n!を求めるプログラムです。普通に考えれば、繰り返し処理をしてやることでプログラムを組めますが、再帰関数を使って組むときは次のように考えます。 n!はn×(n-1)!である (n-1)!は(n-1)×(n-2)!である … 2!は2×1!である 1!は1である という風に考えて、自分自身を呼び出していきます。次のようになるでしょう(long intは整数型の大きなものです)。 long factorial(int n){ long temp; if(n==0||n==1) return 1; temp = n*factorial(n-1); return temp; } 重要なのは「factorial(n-1)」です。引数を(n-1)として自分を再帰的に、つまり自分で自分の関数を呼び出しています。 例2 フィボナッチ数列を求める フィボナッチ数列Fnは、 という風に、n番目の数列の項に対し、n-1番目とn-2番目の項を足したものという風に定義されます。ここから、次のようにプログラムを組むことで任意番目のフィボナッチ数列を求めることができます。 int fibonacci(int n){ if(n=0)return 0; if(n=1)return 1; return fibonacci(n-1)+fibonacci(n-2); } 例3 一般の漸化式の項を求める 例1,例2のように、前の項が決まることで次の項が決まる数列の定義の仕方を漸化式と言います。ここでは、 となる数列a_nを求めてみましょう(これの一般項の求め方は高校数学Bで習ってください)。 int n_seq(int n,int a,int p,int q){ if(n =0) return -1; if(n==1) return a; return p*n_seq(n-1,a,p,q)+q; } 例3は少し難しい例でしたが、このような形で再帰関数は使うことが出来ます。しかし、計算量的に考えると普通のやり方のほうが優れていることも多いです。
https://w.atwiki.jp/otya128/pages/40.html
@S_HELLO GOSUB @WINFLAG WINX2=64 WINY2=19 WINTTL$="HELLO" RETURN @WIN_HELLO WINSX=0 WINSY=0 WINSC=1 WINSTR$="Hello!" GOSUB@WINSTRPUT RETURN @S_HELLO2 WIN_MODE=1 GOSUB @WINFLAG HELLO2_X2=LEN("Windowsテ゛コンヒ゜ュ-タ-ノ")*8 HELLO2_Y2=64+18+16+8 HELLO2_SCY=8 HELLO2_SCX=8 WINTTL$="HELLOFONT" WINTTL$="Form1" HELLOTXT$="WINDOWS" HELLORF[0]=1 HELLO2_RADMAX=4-1 RETURN @WIN_HELLO2 WIN_MODE=1 WINCLS=1 WINTTL$="Form1 - "+STR$(HELLOBC) WINX2=HELLO2_X2 WINY2=HELLO2_Y2 WINSCX=HELLO2_SCX WINSCY=HELLO2_SCY GOSUB @WINDOW HELLO2_SCX=WINSCX HELLO2_SCY=WINSCY IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$=WINTXT$+"テ゛コンヒ゜ュ-タ-ノ IF LEN(WINSTR$)*8 HELLO2_X2 THEN HELLO2_X2=HELLO2_X2+1 IF LEN(WINSTR$)*8 HELLO2_X2 THEN HELLO2_X2=HELLO2_X2-1 IF HELLOCHKF==1AND LEN(WINSTR$)*8!=HELLO2_X2 THEN HELLO2_X2=LEN(WINSTR$)*8 GOSUB @WINSTRPUT WINSX=0 WINSY=8 WINSC=1 WINSTR$="セカイカ゛ヒロカ゛リマス。 GOSUB @WINSTRPUT WINBX=37 WINBY=16 WINBSTR$="button1" GOSUB @WINBTN IF WINBTNF==1THEN HELLO2F=1 HELLOBC=HELLOBC+1 IF HELLO2F==1THEN WINSX=0 WINSY=26 WINSC=4 WINSTR$="ЁЖ"+STR$(HELLOBC)+"ホ゛タンオサレタ" GOSUB@WINSTRPUT WINPX=5 WINPY=26+8 WINPX2=HELLO2_X2 WINPY2=26+16 WINPS=HELLOBC GOSUB @WINPROGBAR WINTR=HELLORF[1]+HELLORF[3] WINTM=HELLORF[2]+HELLORF[3] WINTX=0 WINTX2= HELLO2_X2 WINTY=26+16 WINTXTP$=HELLOTXT$ WINTSX=HELLOTSX WINTA=HELLOAC GOSUB @WINTXTBOX HELLOTSX=WINTSX HELLOTXT$=WINTXT$ HELLOAC=WINTA WINCX=2 WINCY=26+25 WINCSTR$="checkBox1 WINCHKF=HELLOCHKF GOSUB @WINCHKBOX HELLOCHKF=WINCHKF WINRX=2 WINRY=26+25+8 WINRSTR$="radioButton1 WINRF=HELLORF[0] GOSUB @WINRADBTN HELLORF[0]=WINRF IF WINNRF==1THEN HELLO2_RAD=0 GOSUB @HELLO2_RAD WINRF=HELLORF[1] WINRX=2 WINRY=26+25+8+8 WINRSTR$="Readonly GOSUB @WINRADBTN HELLORF[1]=WINRF IF WINNRF==1THEN HELLO2_RAD=1 GOSUB @HELLO2_RAD WINRF=HELLORF[2] WINRX=2 WINRY=26+25+8+8+8 WINRSTR$="Masked GOSUB @WINRADBTN HELLORF[2]=WINRF IF WINNRF==1THEN HELLO2_RAD=2 GOSUB @HELLO2_RAD WINRF=HELLORF[3] WINRX=2 WINRY=26+25+8+8+8+8 WINRSTR$="MaskedReadonly GOSUB @WINRADBTN HELLORF[3]=WINRF IF WINNRF==1THEN HELLO2_RAD=3 GOSUB @HELLO2_RAD RETURN @HELLO2_RAD HELLORF[HELLO2_RAD]=1 FOR I=0TO HELLO2_RADMAX IF HELLO2_RAD!=I THEN HELLORF[I]=0 NEXT RETURN '-シュウリョウ- '(ラシ゛オホ゛タンヲショキカ) @C_HELLO2 FOR I=1TO HELLO2_RADMAX HELLORF[I]=0 NEXT HELLORF[0]=1 HELLOCHKF=0 GOSUB @WINCLOSE RETURN @S_SETTING WIN_MODE=1 GOSUB @WINFLAG SETTING_X2=64+48 SETTING_Y2=74 WINTTL$="SETTING" SETTING_RF[0]=MODE==0 SETTING_RF[1]=MODE==1 SETTING_RADMAX=2-1 RETURN @WIN_SETTING WIN_MODE=1 WINX2=SETTING_X2 WINY2=SETTING_Y2 WINSCX=SETTING_SCX WINSCY=SETTING_SCY GOSUB @WINDOW SETTING_SCX=WINSCX SETTING_SCY=WINSCY IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$="マウス" GOSUB @WINSTRPUT WINRF=SETTING_RF[0] WINRX=0WINRY=8 WINRSTR$="MODE0" GOSUB @WINRADBTN SETTING_RF[0]=WINRF IF WINNRF==1THEN SETTING_RF[1]=0 MOUSEMODE=0 WINRF=SETTING_RF[1] WINRX=0WINRY=16 WINRSTR$="MODE1" GOSUB @WINRADBTN SETTING_RF[1]=WINRF IF WINNRF==1THEN SETTING_RF[0]=0 MOUSEMODE=1 WINSX=8 WINSY=24 WINSC=1 WINSTR$="ホ゛タン" GOSUB @WINSTRPUT WINCHKF=SETTING_CHKF WINCX=0 WINCY=32 WINCSTR$="Aテ゛クリック GOSUB @WINCHKBOX SETTING_CHKF=WINCHKF IF SETTING_CHKF==1THEN CLICKBTN=16 ELSE CLICKBTN=256 P$=STR$(FPS/60) WINSX=0 WINSY=40 WINSC=1 WINSTR$="ハ゜フォ-マンス "+P$ GOSUB @WINSTRPUT RETURN @S_FREE GOSUB @WINFLAG WINX2=48 WINY2=32 WINTTL$="FREE RETURN @WIN_FREE WINSTR$=STR$(FREEVAR) WINSX=0 WINSY=0 WINSC=1 GOSUB @WINSTRPUT RETURN @S_RUN WINMLT[TSK]=RUN_P GOSUB @WINFLAG WINX2=80 WINY2=40 WINTTL$="RUN RUN_P=RUN_P+1 RETURN @WIN_RUN P=WINMLT[TSK] WINTX2=WINX2-1 WINTA=RUNTA[P] WINTX=1 WINTY=8 WINTXTP$=RUNNAME$[P] WINTSX=RUNSX[P] GOSUB @WINTXTBOX RUNSX[P]=WINTSX RUNNAME$[P]=WINTXT$ RUNTA[P]=WINTA WINBX=2 WINBY=18 WINBSTR$="RUN" GOSUB@WINBTN RUNBTNF=WINBTNF IF RUNBTNF==1THEN GOSUB @RUN_EXE RETURN @RUN_EXE WINEXE$=RUNNAME$[P] GOSUB @WINEXE CLICK=0 CLICK2=0 CLICK3=0 CLICKR=0 CLICKR2=0 CLICKR3=0 CLICKF=0 'TSK=TSKMAX-1 RETURN 'カンイ エテ゛ィタ @S_LED WINTTL$="エテ゛ィタ WINX2=130 WINY2=41 LED_LINE=1 RETURN @WIN_LED WINBX=2 WINBY=1 WINBSTR$="LD" GOSUB @WINBTN IF WINBTNF==1THEN LED_FL=1 WINBX=24 WINBY=1 WINBSTR$="SV" GOSUB @WINBTN IF WINBTNF==1THEN LED_FL=2 WINBX=46 WINBY=1 WINBSTR$="UP" GOSUB @WINBTN LED_F=0 IF WINBTNF==1THEN LED_F=2 WINBX=68 WINBY=1 WINBSTR$="DW" GOSUB @WINBTN IF WINBTNF==1THEN LED_F=1 WINSX=1 WINSY=13 WINSTR$="line "+STR$(LED_LINE) WINSC=1 GOSUB @WINSTRPUT LED_B$=LED_LINES$ WINTX2=WINX2-1 WINTX=0 WINTY=22 WINTA=LED_A WINTXTP$=LED_LINES$ WINTSX=LED_TSX GOSUB @WINTXTBOX LED_A=WINTA LED_LINES$=WINTXT$ IF LED_B$!=WINTXT$ THEN GOSUB @LED_APP LED_TSX=WINTSX IF LED_F==1THEN LED_UP=0 GOSUB @LED_DW IF LED_F==2THEN LED_UP=1 GOSUB @LED_DW IF LED_FL!=0THEN GOSUB @LED_FIL RETURN @LED_FIL WINY2=74 WINSTR$="LOAD"*(LED_FL==1)+"SAVE"*(LED_FL==2) WINSX=0 WINSY=32 WINSC=1 GOSUB@WINSTRPUT WINTXTP$=LED_FIL$ WINTX=0 WINTY=40 WINTSX=LED_FLSX WINTX2=WINX2-1 WINTA=LED_FLA GOSUB @WINTXTBOX LED_FLA=WINTA LED_FIL$=WINTXT$ LED_FLSX=WINTSX WINBX=2 WINBY=50 WINBSTR$="LOAD"*(LED_FL==1)+"SAVE"*(LED_FL==2) GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @LED_L_S RETURN @LED_L_S IF LED_FL==1THEN LOAD"MEM "+LED_FIL$,0 LED$=MEM$ IF LED_FL==2THEN MEM$=LED$ SAVE"MEM "+LED_FIL$ LED_I=0 GOSUB @LED_DW RETURN @LED_APP LED$=LEDB$+LED_LINES$+LEDC$ RETURN @LED_DW C$=CHR$(13) L=0 F=0 J=0 I=0 IF LED_LINE 1THEN LED_LINE=0 IF LED_UP==0THEN LED_LINE=LED_LINE+1 ELSE LED_LINE=LED_LINE-1 LED_UP=0 FOR I=0TO LEN(LED$)-1 M$=MID$(LED$,I,1) IF M$==CHR$(13)THEN L=L+1 LED_LS$=MID$(LED$,J,I-J) J=I+1 IF LED_LINE==L AND F==0 THEN F=1 LED_I=I LED_LINES$=LED_LS$ NEXT IF F==0THEN LED_LINES$=MID$(LED$,J,I-J) LED_LINE=L+1 LED_I=J IF LED_LINE==0THEN LED_LINE=0 GOTO @LED_DW LEDB$=MID$(LED$,0,LED_I-1) LEDC$=MID$(LED$,LED_I+LEN(LED_LINES$),256) RETURN @S_MEV WINX2=128 WINY2=74 WINTTL$="MEMViewer" RETURN @WIN_MEV WINTX=0 WINTY=0 WINTXTP$=MEV_F$ WINTSX=MEV_X WINTA=MEVA WINTX2=8*8 GOSUB @WINTXTBOX MEVA=WINTA MEV_X=WINTSX MEV_F$=WINTXT$ WINBX=66 WINBY=-1 WINBSTR$="LOAD" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @MEV_F IF MEV$==""THEN RETURN X=WX+1 Y=WY+19 C=0 K=0 F=0 FOR I=0TO LEN(MEV$)-1 ' M$=MID$(CHR$(13)+MEV$+CHR$(13),I,1) M$=MID$(MEV$,I,1) IF I =MEV_C THEN K=J I=99998 GOTO @MEV_SKK IF M$==CHR$(13)THEN C=C+1 J=I F=1 @MEV_SKK NEXT IF F==0THEN K=0ELSE K=K+1 MEV_D=K'INSTR(J,MID$(MEV$,0,MEV_C)+CHR$(13),CHR$(13)) IF MEV_D==-1THEN MEV_D=0 Z=MEV_D FOR I=MEV_D TO LEN(MEV$)-1 M$=MID$(MEV$,I,1) IF X =WX2 THEN X=WX+1 Y=Y+8 IF Y =WY2 THEN I=9999 GOTO @MEVSK GPUTCHR X,Y,"BGF",ASC(M$),1,1 IF Z==MEV_C THEN GFILL X,Y+7,X+8,Y+8,14 X=X+8 Z=Z+1 IF M$==CHR$(13)THEN Y=Y+8 X=WX+1 'I=I+1 M$=MID$(MEV$,I,1) @MEVSK NEXT B=BUTTON() IF B==4THEN MEV_C=MEV_C-1 IF B==8THEN MEV_C=MEV_C+1 IF MEV_C 0THEN MEV_C=0 IF MEV_C =LEN(MEV$)THEN MEV_C=LEN(MEV$)-1 KEYFLG=KEYFLG+(WINACTV==1) IF WINACTV==1THEN @MEV_ED RETURN @MEV_ED INK$=KEYBF$ KEYBF$="" IF KEYFLG==1AND INK$!=""THEN MEV$=MID$(MEV$,0,MEV_C)+INK$+MID$(MEV$,MEV_C,256) MEV_C=MEV_C+LEN(INK$) RETURN @MEV_F LOAD "MEM "+MEV_F$,0 MEV$=MEM$ RETURN @S_CLOCK WINX2=66 WINY2=75 WINTTL$="CLOCK WINCLS=1 RETURN @WIN_CLOCK GCIRCLE WX+33,WY+42,32,7 TMREAD(TIME$),A,B,C B=B+C/60 A=A%12 E=35+WX+COS(RAD((180+90+C*6)%360))*31'+2 D=42+WY+SIN(RAD((180+90+C*6)%360))*31'+10 GLINE E,D,WX+34,WY+42,13 E=35+WX+COS(RAD((180+90+B*6)%360))*30'+2 D=42+WY+SIN(RAD((180+90+B*6)%360))*30'+10 GLINE E,D,WX+34,WY+42,14 E=35+WX+COS(RAD((180+90+A*30+B*0.5)%360))*22'+2 D=42+WY+SIN(RAD((180+90+A*30+B*0.5)%360))*22'+10 GLINE E,D,WX+34,WY+42,14 RETURN @C_CLOCK GOSUB @WINCLOSE RETURN @S_MONO GOSUB @OTWCOL WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO RETURN @C_MONO GOSUB @OTWCOL GOSUB @WINCLOSE RETURN @S_MONO3 GOSUB @S_MONO WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 C=0OR (C+1)/128 C=C*127 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO3 RETURN @C_MONO3 GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_MONO2 GOSUB @OTWCOL WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 IF C 127THEN C=255 ELSE C=0 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO2 RETURN @C_MONO2 GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_COL2 WINCLS=1 GOSUB @OTWCOL FOR COL_I=0TO 255 COLREAD("SP",COL_I),R,G,B IF R 64THEN R=0 IF R 64AND R 128THEN R=128 IF R 128AND R 192 THEN R=192 IF R 192 THEN R=255 IF G 64THEN G=0 IF G 64AND G 128THEN G=128 IF G 128 AND G 192THEN G=192 IF G 192 THEN G=255 IF B 64THEN B=0 IF B 64AND B 128THEN B=128 IF B 128 AND B 192THEN B=192 IF B 192 THEN B=255 ' COMP$=STR$(R)+" "+STR$(G)+" "+STR$(B) GOSUB COMPRT$ COLSET "SP",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "GRP",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "BG",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) NEXT RETURN @WIN_COL2 RETURN @C_COL2 GOSUB @OTWCOL GOSUB @WINCLOSE RETURN @S_COL WINCLS=1 GOSUB @OTWCOL D=128 FOR I=0TO 255 COLREAD("SP",I),R,G,B ' R=(0OR (R/D))*D ' G=(0OR (G/D))*D ' B=(0OR (B/D))*D IF R 128THEN R=255 IF R 128THEN R=0 IF G 128THEN G=255 IF G 128THEN G=0 IF B 128THEN B=255 IF B 128THEN B=0 COLSET "SP",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "BG",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "GRP",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) NEXT RETURN @WIN_COL RETURN @C_COL GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_DBG WINY2=25 WINTTL$="DBG" RETURN @WIN_DBG WINSX=0 WINSY=0 WINSC=1 WINSTR$="X "+STR$(MOUSEX-WINSX[0]) GOSUB @WINSTRPUT WINSX=0 WINSY=8 WINSC=1 WINSTR$="Y "+STR$(MOUSEY-WINSY[0]) GOSUB @WINSTRPUT RETURN @S_M WIN_MODE=1 WINTTL$="オテ゛コ ヒロイ WINX2=100 WINY2=45 GOSUB @WINFLAG RETURN @DGS_WIN_M WINDEGY=20 WINDEGY2=1 WINDEGX=1 WINDEGX2=1 RETURN @DEG_WIN_M GFILL WX,WY,WX2,WY2,0 GFILL WX,WY,WX2,WY+19,15 GBOX WX,WY,WX2,WY2,13 WINSX=8 WINSY=-20 WINSC=1 WINSTR$=WINTTL$[TSK] GOSUB @WINSTRPUT RETURN @WIN_M WINDESIGN$="WIN_M" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=5 WINSY=0 WINSC=0 WINSTR$="ト゛クシ゛WINDOW GOSUB @WINSTRPUT RETURN @S_DT WIN_MODE=1 GOSUB @WINFLAG RETURN @WIN_DT WINDESIGN$="WIN_M" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINBX=0 WINBY=0 WINBSTR$="TST GOSUB @WINBTN IF WINBTNF==1THEN TALK "ウワアアアアアオサレタアアアア WINTX=0 WINTY=12 WINTX2=WINX2 WINTXTP$=WINDT$ WINTA=WINDT_A WINTSX=WINDT_SX GOSUB @WINTXTBOX WINDT$=WINTXT$ WINDT_A=WINTA WINDT_SX=WINTSX RETURN @S_W3 WINTTL$="WWW WIN_MODE=1 GOSUB @WINFLAG RETURN @DGS_W3 WINDEGY=9 WINDEGX=8 WINDEGY2=8 WINDEGX2=8 RETURN @DEG_W3 GFILL WX,WY,WX2,WY2,WINBG GFILL WX,WY,WX2,WY+8,1 GFILL WX,WY+9,WX+8,WY2,13 GFILL WX+9,WY2-8,WX2,WY2,13 GFILL WX2-8,WY+9,WX2,WY2-8,13 GBOX WX2-8,WY,WX2,WY+8,15 GFILL WX2-7,WY+1,WX2-1,WY+7,13 GLINE WX2-6,WY+2,WX2-2,WY+6,14 GLINE WX2-2,WY+2,WX2-6,WY+6,14 WINSX=-8 WINSY=-8 WINSTR$=WINTTL$ WINSC=0 GOSUB @WINSTRPUT RETURN @WIN_W3 WINDESIGN$="W3" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$="WWWDS GOSUB @WINSTRPUT RETURN @S_SEIUN WINY2=32 WINTTL$="セイウン RETURN @WIN_SEIUN WINTXTP$=STR$(WINSEIUN) WINTA=SEIUN_A WINTSX=SEIUN_X WINTX=0 WINTX2=62 WINTY=0 GOSUB @WINTXTBOX SEIUN_X=WINTSX SEIUN_A=WINTA WINSEIUN=VAL(WINTXT$) WINBX=0 WINBY=12 WINBSTR$="OK GOSUB @WINBTN IF WINBTNF==1 THEN WINSTAR=WINSEIUN RETURN @S_STAR WIN_MODE=1 GOSUB @WINFLAG WINX2=128 WINY2=64 WINSTAR=7 RETURN @WIN_STAR WINTTL$="O"+STR$(WINSTAR)+"セイウン WINBG=14 GOSUB @WINDOW IF WINIDFLG==1THEN RETURN R=0 S=0 FOR I=0TO 10 S=((S+15)*WINSTAR)AND 4095 R=S/4096 S=((S+15)*WINSTAR)AND 4095 T=S/4096 GPSET WFX+R*128,WFY+T*54,15 NEXT RETURN @S_CAVEM CAVE_MU=1 WINNAME$[TSK]="CAVE GOTO @S_CAVE RETURN @S_CAVE GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN CAVE_BF=BF ' CAVE_MU=0 WINTTL$="CAVE-OCHAME"+"И"*CAVE_MU GOSUB@INI_CAVE RETURN @INI_CAVE CAVE_S=0 CAVE_Y=30 CAVE_V=RND(122) CAVE_P=0 CAVE_W=0 WINY2=191/2+11 WINX2=125 GPAGE 0,CAVE_BF,M GCLS 14 GPAGE 0,!M,M CAVE_SI=2 WINCLS=1 CAVE_U=0 CAVE_X=0 RETURN @C_CAVE CAVE_MU=0 GOSUB @WINCLOSE CAVE_GV=0 CAVE_S=0 BF=CAVE_BF GOSUB @WINBUFFC RETURN @WIN_CAVE GCOPY CAVE_BF,4,0,255/CAVE_SI,191/CAVE_SI,WFX,WFY,0 WINSX=0 WINSY=0WINSC=0WINSTR$=STR$(0OR CAVE_S)+" RESE CLICK"*CAVE_GV GOSUB @WINSTRPUT IF CAVE_GV==1AND WINACTV==1AND CLICK3==1AND WINFLG[TSK]==2THEN GOSUB@INI_CAVE CAVE_GV=0 IF CAVE_GV==1THEN RETURN BF=CAVE_BF GOSUB @WINBUFFP 'GPAGE 0,CAVE_BF,M CAVE_P=CAVE_P+1 CAVE_W=70-CAVE_P/20 GCOPY CAVE_BF,8/CAVE_SI,0,255/CAVE_SI,191/CAVE_SI,0,0,1 GFILL (254-6)/CAVE_SI,0,255/CAVE_SI,191/CAVE_SI,7 GFILL (254-6)/CAVE_SI,CAVE_V/CAVE_SI,255/CAVE_SI,(CAVE_V+CAVE_W)/CAVE_SI,14 CAVE_I=(GSPOIT(34/CAVE_SI,(CAVE_Y)/CAVE_SI+2) 14)CAVE_S=CAVE_S+1/CAVE_SI IF CAVE_I==1AND CAVE_MU==0THEN CAVE_GV=1 GFILL 30/CAVE_SI,CAVE_Y/CAVE_SI,34/CAVE_SI,(CAVE_Y+4)/CAVE_SI,2 CAVE_X=CAVE_X-(16 AND BUTTON())%5+0.5 CAVE_S=CAVE_S+(0OR ABS(CAVE_X))CAVE_U=RND(2)*4-2 CAVE_V=CAVE_V+CAVE_U*(CAVE_U+CAVE_V 0)*(CAVE_U+CAVE_V+CAVE_W 191) CAVE_Y=CAVE_Y+CAVE_X/CAVE_SI GOSUB@WINBUFFP2 'GPAGE 0,!M,M RETURN @S_PAINT WINMLT[TSK]=PAINT_M BF=0 GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN PAINT_BF[PAINT_M]=BF BFC=15 GOSUB @WINBUFFGCLS PAINTF[PAINT_M]=0 WINTTL$="PAINT PAINT_M=(PAINT_M+1)%2 WINCLS=1 RETURN @C_PAINT BF=PAINT_BF[WINMLT[TSK]] GOSUB @WINBUFFC GOSUB @WINCLOSE RETURN @WIN_PAINT P=WINMLT[TSK]'PAINT_C ' PAINT_C=(PAINT_C+1)%PAINT_M PAINTF2=0 IF PAINTF[P]==0THEN PAINTF[P]=1 RETURN IF WINACTV==0OR WINFLG[0]==3THEN PAINTF2=1 GCOPY PAINT_BF[P],0,0,62,52,WFX,WFY,1 BF=PAINT_BF[P] GOSUB @WINBUFFP IF PAINTF2==0AND CLICK==0AND CLICK2==1THEN GLINE MOUSEX-WFX,MOUSEY-WFY,PAINTX[P],PAINTY[P],14 PAINTX[P]=MOUSEX-WFX PAINTY[P]=MOUSEY-WFY ' PAINT_O=CLICK2 ' GPSET MOUSEX-WFX,MOUSEY-WFY,14 GOSUB @WINBUFFP2 RETURN @INI_GAME1 GAME1_X=16 GAME1_Y=95-20 GAME1_N=10 GAME1_GV=0 RETURN @S_GAME1 WINCLS=1 WINX2=130 WINY2=192/2+11 GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN BFC=6 GAME1_BF=BF GOSUB @WINBUFFGCLS GOSUB @WINBUFFP GFILL 0,96-16,128,96,7 GOSUB @WINBUFFP2 GOSUB @INI_GAME1 WINTTL$="GAME1 RETURN @WIN_GAME1 GCOPY GAME1_BF,0,0,128,96,WFX,WFY,1 GFILL GAME1_X-4+WFX,WFY+GAME1_Y-4,WFX+GAME1_X+4,GAME1_Y+4+WFY,4 IF GAME1_GV==1AND WINACTV==1AND CLICK3==1AND WINFLG[TSK]==2THEN GOSUB@INI_GAME1 IF GAME1_GV==1THEN RETURN IF BUTTON()AND 4THEN GAME1_X=GAME1_X-1 IF BUTTON()AND 8THEN GAME1_X=GAME1_X+4 IF(BUTTON()AND 16)==16AND GAME1_J==0THEN GAME1_J=1 IF GAME1_J==1THEN GAME1_Y=GAME1_Y*0.9 IF GAME1_J==2THEN GAME1_Y=GAME1_Y*1.1 IF GAME1_J==1AND GAME1_Y =16THEN GAME1_J=2 IF GAME1_J==2AND GAME1_Y =95-20THEN GAME1_J=0 GAME1_Y=95-20 GAME1_X=GAME1_X-2-!!JMPFLG IF GAME1_X 0THEN GAME1_X=0 BF=GAME1_BF GOSUB @WINBUFFP GCOPY GAME1_BF,2,0,128,96,0,0,1 GAME1_A1=GSPOIT(GAME1_X-4,GAME1_Y+8) GAME1_A2=GSPOIT(GAME1_X,GAME1_Y+8) GAME1_A3=GSPOIT(GAME1_X+4,GAME1_Y+8) IF !(GAME1_A1+GAME1_A2+GAME1_A3)THEN GAME1_GV=1 GAME1_R=RND(GAME1_N) GAME1_A=GSPOIT(GAME1_X,GAME1_Y) IF GAME1_A==2THEN GAME1_GV=1 GFILL 128-ABS(RND(15-GAME1_N)),96-16,128,96,!!GAME1_R*7 GAME1_B=RND(24) GAME1_BH=RND(20) IF GAME1_BH==0THEN GFILL 126,GAME1_B+8,128,GAME1_B,2 IF GAME1_BH!=0THEN GFILL 126,0,128,79,6 GAME1_N=GAME1_N-0.001 GOSUB @WINBUFFP2 RETURN @C_GAME1 BF=GAME1_BF GOSUB @WINBUFFC GOSUB @WINCLOSE GAME1_GV=0 RETURN @S_MAC WIN_MODE=1 GOSUB @WINFLAG WINTTL$="MAC RETURN @WIN_MAC WINDESIGN$="MAC GOSUB @WINDOW RETURN @DGS_MAC WINDEGW=1 WINDEGX=1 WINDEGX2=1 WINDEGY=10 WINDEGY2=1 RETURN @DGW_MAC IF WINFLG[TSK]==4THEN @DGW_MAC_S F=0IF MOUSEX =WX AND MOUSEX =WX2 AND MOUSEY =WY AND MOUSEY =WY2 THEN F=1 IF F==0AND CLICKF==1THEN WINFLG[TSK]=1 WINACTV=0 WINFLG=1 RETURN F=0 IF MOUSEX =WX+11 AND MOUSEX =WX2 THEN F=1 IF F==1 AND MOUSEY =WY AND MOUSEY =WFY THEN F=2 IDF=0 IF F==2 AND CLICK==1AND IDOUT==0THEN WINFLG=3 IDOUFLG=1 IDF=1GOSUB @WINSWP RETURN IF F==2 AND CLICKF==1AND IDOUT==0THEN WINFLG[TSK]=2GOSUB @WINSWP RETURN IF WINFLG==3THEN IDOUT=1 GOSUB @WINIDOU2 F=0 IDOUFLG=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1 AND MOUSEY =WFY AND MOUSEY =WY2 THEN F=2 IF F==2 AND CLICKF==1THEN WINFLG[TSK]=2 GOSUB @WINSWP RETURN F=0 IDOUFLG=0 IF MOUSEX =WX AND MOUSEX =WX+11 THEN F=1 IF F==1 AND MOUSEY =WY AND MOUSEY WFY THEN F=2 IF F==2 AND CLICKF==1THEN WINFLG[TSK]=2 GOSUB @WINSWP 'RETURN @DGW_MAC_S F=0 IF MOUSEX =WX+4 AND MOUSEX =WX+9 THEN F=1 IF F==1 AND MOUSEY =WY+3 AND MOUSEY WFY-3 THEN F=2 IF (F==2AND CLICK==1)OR WINFLG[TSK]==4THEN WINCS=0GOTO@DGM_MAC WINCS=0 RETURN @DGM_MAC WINFLG[0]=4 GFILL WX+4,WFY-2,WX+56,WFY+10,15 GBOX WX+4,WFY-2,WX+56,WFY+10,14 F=0 IF MOUSEX WX+4OR MOUSEX WX+56 THEN F=1 IF MOUSEY WY+3OR MOUSEY WFY+10THEN F=1 IF CLICK==1AND F==1THEN WINFLG[TSKB]=2 F=0 IF MOUSEX =WX+5AND MOUSEX =WX+45 THEN F=1 IF F==1AND MOUSEY =WFY AND MOUSEY =WFY+8THEN F=2 IF F==2AND CLICK==1THEN GOSUB @WINCLOSEGT IF F==2THEN GFILL WX+4,WFY-1,WX+55,WFY+8,14 WINSX=4 WINSY=0 WINSTR$="CLOSE" WINSC=1*F!=2 GOSUB @WINSTRPUT RETURN @DEG_MAC IF WINDEGW==1AND WINIDFLG==1THEN GOTO @DGW_MAC GFILL WX,WY,WX2,WFY,15 GFILL WFX,WFY,WFX2,WFY2,WINBG GBOX WX,WY,WX2,WY2,14 GLINE WX,WY+10,WX2,WY+10,14 IF WINACTV==1THEN GOSUB @DEGMAC WINSTR$=WINTTL$ WINSX=(WINX2/2+6.5)-(LEN(WINTTL$[TSK])/2)*8-1 IF WINSX 12THEN WINSX=12 WINSY=-9 WINSX2=WINSX+WX+LEN(WINTTL$)*8 IF WINSX2 WX2 THEN WINSX2=WX2-2 GFILL WINSX+WX,WY+1,WINSX2,WY+9,15 WINSC=1 GOSUB @WINSTRPUT GFILL WX+3,WY+3,WX+10,WY+7,15 GBOX WX+4,WY+3,WX+9,WY+7,14 RETURN @DEGMAC GLINE WX+2,WY+3,WX2-2,WY+3,14GLINE WX+2,WY+5,WX2-2,WY+5,14GLINE WX+2,WY+7,WX2-2,WY+7,14 RETURN @S_LONG WINTTL$="A"*256 RETURN @WIN_LONG RETURN @S_MENU WINTTL$="MENUBAR WINX2=64+8 RETURN @WIN_MENU WFX2=WFX2+800 WINMK=OTYAMKF WINMKS=OTYAMKFS WINMX=0WINMY=0 WINMX2=64 WINMMAX=3 WINM$[0]="MENU1" ' WINMENU[0]=16 WINM$[1]="2" WINM$[2]="3" WINM$[3]="4" GOSUB @WINMENU OTYAMKF=WINMK OTYAMKFS=WINMKS IF WINM==-1THEN OTYAMK2=0 IF WINM==-1GOTO@WIN_MENU_S ' ELSE OTYAMKF=1 OTYAMKFS=WINM WINMX=0WINMY=8 GOSUB "@WIN_MENU_"+STR$(WINM) WINMK=OTYAMK2 WINMKS=OTYAMKS2 GOSUB @WINMENU2 OTYAMK2=WINMK OTYAMKS2=WINMKS WINMK=0 WINMKS=0 IF WINM==1THEN OTYAMENU=1ELSE OTYAMENU=0 IF WINM==1THEN GOSUB @WIN_MENU__ @WIN_MENU_S WFX2=WFX2-800 RETURN @WIN_MENU__ OTYAMK2=1 OTYAMKS2=1 WINM$[0]="FILES WINM$[1]="LOAD" WINM$[2]="RUN" WINM$[3]="CONT" WINM$[4]="SAVE" WINMX2=80 WINMK=OTYAMK3 WINMKS=OTYAMKS3 WINM=-9 WINMX=40WINMY=16 WINMMAX=4 GOSUB @WINMENU2 OTYAMK3=WINMK OTYAMKS3=WINMKS IF WINM==0THEN GOSUB @WIN_MENU___ IF WINM==1THEN GOSUB @WIN_MENU___ IF WINM==4THEN GOSUB @WIN_MENU___ IF WINM==2THEN GOSUB @WIN_MENU___R RETURN @WIN_MENU___ WINM$[0]="PRG WINM$[1]="MEM WINM$[2]="CHR WINM$[3]="GRP WINMX2=120 WINMK=OTYAMK4 WINMKS=OTYAMKS4 WINMX=80WINMY=8 WINMMAX=3 GOSUB @WINMENU2 OTYAMK4=WINMK OTYAMKS4=WINMKS WINM=-1 RETURN @WIN_MENU___R WINM$[0]="@COMMAND WINM$[1]="@OTW WINMX2=143 WINMK=OTYAMK4R WINMKS=OTYAMKS4R WINMX=80WINMY=24 WINMMAX=1 GOSUB @WINMENU2 OTYAMK4R=WINMK OTYAMKS4R=WINMKS RETURN @WIN_MENU_0 WINMX2=40 WINM$[0]="MENU" WINM$[1]="MENU2" WINMMAX=1 RETURN @WIN_MENU_1 RETURN @WIN_MENU_2 RETURN @WIN_MENU_3 RETURN @C_MINE BF=MINE_BF GOSUB @WINBUFFC GOSUB @WINCLOSE MINE_F=0 FOR I=0TO 63 FOR J=0TO 63 MINE_M[I,J]=0 MINE_F[I,J]=0 NEXT NEXT RETURN 'DRAW DATA @N_MINE_N0 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX,MINE_NY,MINE_NX+6,MINE_NY,15 GLINE MINE_NX,MINE_NY+1,MINE_NX+6,MINE_NY+1,15 GLINE MINE_NX,MINE_NY+2,MINE_NX,MINE_NY+6,15 GLINE MINE_NX+1,MINE_NY+2,MINE_NX+1,MINE_NY+6,15 GLINE MINE_NX+7,MINE_NY+1,MINE_NX+7,MINE_NY+7,1 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+7,1 GLINE MINE_NX+2,MINE_NY+6,MINE_NX+5,MINE_NY+6,1 GLINE MINE_NX+1,MINE_NY+7,MINE_NX+5,MINE_NY+7,1 RETURN @N_MINE_N11 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 RETURN @N_MINE_N1 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+4,MINE_NY+7,4 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+3,MINE_NY+2,4 GLINE MINE_NX+2,MINE_NY+7,MINE_NX+6,MINE_NY+7,4 RETURN @N_MINE_N2 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,10 GPSET MINE_NX+2,MINE_NY+2,10 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,10 GLINE MINE_NX+5,MINE_NY+4,MINE_NX+2,MINE_NY+7,10 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+6,MINE_NY+7,10 RETURN @N_MINE_N3 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GPSET MINE_NX+2,MINE_NY+2,2 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,2 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,2 GLINE MINE_NX+4,MINE_NY+4,MINE_NX+5,MINE_NY+4,2 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,2 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,2 GPSET MINE_NX+2,MINE_NY+6,2 RETURN @N_MINE_N4 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+5,MINE_NY+1,MINE_NX+2,MINE_NY+4,194 GLINE MINE_NX+5,MINE_NY+2,MINE_NX+5,MINE_NY+7,194 GLINE MINE_NX+2,MINE_NY+6,MINE_NX+6,MINE_NY+6,194 GPSET MINE_NX+2,MINE_NY+5,194 RETURN @N_MINE_N5 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+2,MINE_NY+1,MINE_NX+6,MINE_NY+1,49 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+2,MINE_NY+4,49 GLINE MINE_NX+3,MINE_NY+3,MINE_NX+5,MINE_NY+3,49 GLINE MINE_NX+6,MINE_NY+4,MINE_NX+6,MINE_NY+6,49 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,49 GPSET MINE_NX+2,MINE_NY+6,49 RETURN @N_MINE_N6 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+5,MINE_NY+1,27 GLINE MINE_NX+2,MINE_NY+3,MINE_NX+2,MINE_NY+6,27 GLINE MINE_NX+3,MINE_NY+4,MINE_NX+5,MINE_NY+4,27 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,27 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,27 GPSET MINE_NX+3,MINE_NY+2,27 RETURN @N_MINE_N7 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+2,MINE_NY+1,MINE_NX+6,MINE_NY+1,14 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+4,MINE_NY+4,14 GLINE MINE_NX+4,MINE_NY+5,MINE_NX+4,MINE_NY+7,14 GPSET MINE_NX+2,MINE_NY+2,14 RETURN @N_MINE_N8 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,29 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+2,MINE_NY+3,29 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,29 GLINE MINE_NX+3,MINE_NY+4,MINE_NX+5,MINE_NY+4,29 GLINE MINE_NX+2,MINE_NY+5,MINE_NX+2,MINE_NY+6,29 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,29 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,29 RETURN 'BOMB @N_MINE_N9 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GPSET MINE_NX+2,MINE_NY+2,14 GPSET MINE_NX+3,MINE_NY+3,15 GLINE MINE_NX+2,MINE_NY+4,MINE_NX+6,MINE_NY+4,14 GLINE MINE_NX+4,MINE_NY+2,MINE_NX+4,MINE_NY+6,14 GLINE MINE_NX+3,MINE_NY+5,MINE_NX+2,MINE_NY+6,14 GLINE MINE_NX+5,MINE_NY+5,MINE_NX+6,MINE_NY+6,14 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+5,MINE_NY+3,14 RETURN @N_MINE_N10 '? GOSUB @N_MINE_N0 GLINE MINE_NX+1,MINE_NY+1,MINE_NX+2,MINE_NY+0,14 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+3,MINE_NY+0,14 GLINE MINE_NX+4,MINE_NY+2,MINE_NX+3,MINE_NY+3,14 GPSET MINE_NX+3,MINE_NY+5,14 RETURN @N_MINE_N12 GOSUB @N_MINE_N0 GPSET MINE_NX+2,MINE_NY+2,2 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+3,MINE_NY+3,2 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+4,MINE_NY+3,2 GPSET MINE_NX+4,MINE_NY+4,14 GLINE MINE_NX+3,MINE_NY+5,MINE_NX+5,MINE_NY+5,14 RETURN @N_MINE_N13 GOSUB @N_MINE_N9 GPAINT MINE_NX+1,MINE_NY+1,2 RETURN @N_MINE_N14 GOSUB @N_MINE_N9 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+6,MINE_NY+6,2 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+2,MINE_NY+6,2 RETURN '0=ナシ '1=1 '2=2 '8=8 '9=BOM '10=? '11=FLG '12=OPEN '13ハ゛クハツ '14フセカ゛レタ @N_MINE BF=MINE_BF GOSUB @WINBUFFP FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_F[I,J]=0 MINE_M[I,J]=(RND(MINE_BOM)==0)*9 MINE_BOMB=MINE_BOMB+(MINE_M[I,J]==9) MINE_NX=I*8 MINE_NY=J*8 GOSUB @N_MINE_N0 NEXT NEXT 'スウシ゛セット FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 IF MINE_M[I,J]==9AND I 0THEN IF MINE_M[I-1,J]!=9THEN MINE_M[I-1,J]=MINE_M[I-1,J]+1 IF MINE_M[I,J]==9AND I MINE_X-1 THEN IF MINE_M[I+1,J]!=9THEN MINE_M[I+1,J]=MINE_M[I+1,J]+1 IF MINE_M[I,J]==9AND J 0THEN IF MINE_M[I,J-1]!=9THEN MINE_M[I,J-1]=MINE_M[I,J-1]+1 IF MINE_M[I,J]==9AND J MINE_Y-1 THEN IF MINE_M[I,J+1]!=9THEN MINE_M[I,J+1]=MINE_M[I,J+1]+1 F=0 IF MINE_M[I,J]==9AND I MINE_X-1AND J 0THEN IF MINE_M[I+1,J-1]!=9THEN F=1 IF F==1THEN MINE_M[I+1,J-1]=MINE_M[I+1,J-1]+1 F=0 IF MINE_M[I,J]==9AND J MINE_Y-1AND I 0THEN IF MINE_M[I-1,J+1]!=9THEN F=1 IF F==1THEN MINE_M[I-1,J+1]=MINE_M[I-1,J+1]+1 F=0 IF MINE_M[I,J]==9AND J 0AND I 0THEN IF MINE_M[I-1,J-1]!=9THEN F=1 IF F==1THEN MINE_M[I-1,J-1]=MINE_M[I-1,J-1]+1 F=0 IF MINE_M[I,J]==9AND J MINE_Y-1AND I MINE_X-1THEN IF MINE_M[I+1,J+1]!=9THEN F=1 IF F==1THEN MINE_M[I+1,J+1]=MINE_M[I+1,J+1]+1 NEXT NEXT RETURN FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_NX=I*8 MINE_NY=J*8 GOSUB "@N_MINE_N"+STR$(MINE_M[I,J]) NEXT NEXT GOSUB @WINBUFFP2 RETURN @GV_MINE FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_NX=I*8 MINE_NY=J*8 IF MINE_M[I,J]==9THEN IF MINE_F[I,J]==-1THEN MINE_M[I,J]=14 ELSE MINE_M[I,J]=13 IF MINE_M[I,J]==0THEN MINE_M[I,J]=11 GOSUB "@N_MINE_N"+STR$(MINE_M[I,J]) NEXT NEXT RETURN @P_MINE ' IF MINE_M[MINE_PX,MINE_PY]==3THEN IF MINE_F[MINE_PX,MINE_PY]==-1THEN RETURN MINE_NX=MINE_PX*8 MINE_NY=MINE_PY*8 IF MINE_N==0THEN GOSUB @P_MINE_O RETURN IF MINE_M[MINE_PX,MINE_PY]==9THEN MINE_GV=1 IF MINE_F[MINE_PX,MINE_PY]==0THEN MINE_SPACE=MINE_SPACE-1 IF MINE_F[MINE_PX,MINE_PY]==-2THEN MINE_SPACE=MINE_SPACE-1 MINE_F[MINE_PX,MINE_PY]=1 GOSUB "@N_MINE_N"+STR$(MINE_N) RETURN @P_MINE_O P=0 MINE_OX[0]=MINE_PX MINE_OY[0]=MINE_PY @P_MINE_OL IF P==-1THEN RETURN IF MINE_M[MINE_OX[P],MINE_OY[P]]==0THEN MINE_M[MINE_OX[P],MINE_OY[P]]=11 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 GOSUB "@N_MINE_N11"'+STR$(MINE_M[MINE_OX[P],MINE_OY[P]]) IF MINE_F[MINE_OX[P],MINE_OY[P]]==0THEN MINE_SPACE=MINE_SPACE-1 IF MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 MINE_F[MINE_OX[P],MINE_OY[P]]=1 IF MINE_OX[P] 1THEN @P_MINE_OL2 G=MINE_M[MINE_OX[P]-1,MINE_OY[P]] IF MINE_F[MINE_OX[P]-1,MINE_OY[P]]==-1THEN @P_MINE_OL2 IF G==0 OR G==0 THEN MINE_OX[P+1]=MINE_OX[P]-1 MINE_OY[P+1]=MINE_OY[P]P=P+1 GOTO @P_MINE_OL F=0 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NX=MINE_NX-8 GOSUB "@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P]-1,MINE_OY[P]]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL2 IF MINE_OY[P] 1THEN @P_MINE_OL3 G=MINE_M[MINE_OX[P],MINE_OY[P]-1] IF MINE_F[MINE_OX[P],MINE_OY[P]-1]==-1THEN @P_MINE_OL3 IF G==0 OR G==0 THEN MINE_OX[P+1]=MINE_OX[P] MINE_OY[P+1]=MINE_OY[P]-1P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NY=MINE_NY-8 GOSUB"@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P],MINE_OY[P]-1]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL3 IF MINE_OX[P] =MINE_X-1THEN @P_MINE_OL4 G=MINE_M[MINE_OX[P]+1,MINE_OY[P]] IF MINE_F[MINE_OX[P]+1,MINE_OY[P]]==-1THEN @P_MINE_OL4 IF G==00OR G==0 THEN MINE_OX[P+1]=MINE_OX[P]+1 MINE_OY[P+1]=MINE_OY[P]P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NX=MINE_NX+8GOSUB"@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P]+1,MINE_OY[P]]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL4 IF MINE_OY[P] =MINE_Y-1THEN @P_MINE_OL5 IF MINE_F[MINE_OX[P],MINE_OY[P]+1]==-1THEN @P_MINE_OL5 G=MINE_M[MINE_OX[P],MINE_OY[P]+1] IF G==00OR G==0 THEN MINE_OX[P+1]=MINE_OX[P] MINE_OY[P+1]=MINE_OY[P]+1P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NY=MINE_NY+8GOSUB "@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P],MINE_OY[P]+1]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL5 P=P-1 GOTO @P_MINE_OL RETURN @MINEKEY KEY 1,"MINE_ END @A_MINE MINE_X=16 MINE_Y=16 MINE_SPACE=MINE_X*MINE_Y MINE_BOM=32'カクリツ DIM MINE_M[64,64] 'フラク゛マッフ゜ DIM MINE_F[64,64] DIM MINE_DX[64] DIM MINE_DY[64] DIM MINE_OX[64*64] DIM MINE_OY[64*64] MINE_=1 RETURN @SB_MINE GOSUB @WINBUFF IF BF==0THEN RETURN MINE_BF=BF RETURN @S_MINE WINCLS=1 IF MINE_F==1THEN GOSUB@WINCLOSE RETURN IF MINE_==0THEN GOSUB @A_MINE IF MINE_B==0THEN GOSUB@SB_MINE MINE_B=0 BF=MINE_BF BFC=13 GOSUB @WINBUFFGCLS GOSUB @N_MINE MINE_F=1 WINCLS=1 WINY2=MINE_Y*8+11 WINX2=MINE_X*8+3 GOSUB @WINBUFFP GBOX 0,0,MINE_X*8,MINE_Y*8,255 GOSUB @WINBUFFP2 MINE_GV=0 MINE_GV2=0 MINE_CL=0 WINTTL$="MINE RETURN @WIN_MINE GCOPY MINE_BF,0,0,MINE_X*8-1,MINE_Y*8-1,WFX,WFY,1 'GAMEOVER IF MINE_GV+MINE_CL THEN WINSX=0WINSY=0 WINSTR$="А TO RESTART"WINSC=1GOSUB@WINSTRPUT BF=MINE_BF GOSUB @WINBUFFP IF MINE_CL AND WINACTV AND BUTTON()==16AND WINFLG[TSK]==2THEN MINE_B=1MINE_F=0GOSUB@S_MINE IF MINE_CL GOTO @SKP_MINE IF MINE_GV==1 THEN BGMPLAY 6 MINE_GV=2 GOTO @SKP_MINE IF MINE_GV==100AND !MINE_GV2 THEN GOSUB@GV_MINE MINE_GV=2 MINE_GV2=1 GOTO @SKP_MINE IF MINE_GV AND WINACTV AND BUTTON()==16 AND WINFLG[TSK]==2THEN MINE_B=1MINE_F=0GOSUB@S_MINE IF MINE_GV THEN MINE_GV=MINE_GV+1 GOTO @SKP_MINE ' IF MINE_CL==1THEN BGMPLAY 5 MINE_CL=2GOTO @SKP_MINE ' IF MINE_CL THEN MINE_CL=2GOTO @SKP_MINE MINE_MX=0OR(MOUSEX-WFX)/8 MINE_MY=0OR(MOUSEY-WFY)/8 F=0 IF MINE_MX =0AND MINE_MY =0THEN F=1 IF F AND MINE_MX =MINE_X-1 AND MINE_MX =MINE_Y-1THEN MINE_MF=1 ELSE MINE_MF=0 'IF MINE_MF THEN ?MINE_M[MINE_MX,MINE_MY] IF CLICK*MINE_MF THEN MINE_PX=MINE_MX MINE_PY=MINE_MY MINE_N=MINE_M[MINE_MX,MINE_MY]GOSUB@P_MINE 'モト゛ス オエ- F=0S=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==-2)THEN F=1 IF F==1THEN MINE_F[MINE_MX,MINE_MY]=0 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N0 S=1 '? F=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==-1)THEN F=1 IF F==1THEN GOSUB @HTN_MINE 'FLAG F=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==0)THEN F=1 IF !S*F THEN GOSUB @FLG_MINE IF MINE_BOMB =0THEN MINE_CL=1BEEP 34 @SKP_MINE F=0 GOSUB @WINBUFFP2 RETURN @HTN_MINE IF MINE_M[MINE_MX,MINE_MY]==9THEN MINE_BOMB=MINE_BOMB+1 IF MINE_M[MINE_MX,MINE_MY]!=9THEN MINE_BOMB=MINE_BOMB-1 MINE_F[MINE_MX,MINE_MY]=-2 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N10 RETURN @FLG_MINE MINE_F[MINE_MX,MINE_MY]=-1 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N12 IF MINE_M[MINE_MX,MINE_MY]==9THEN MINE_BOMB=MINE_BOMB-1 IF MINE_M[MINE_MX,MINE_MY]!=9THEN MINE_BOMB=MINE_BOMB+1 RETURN @C_INV BF=INV_BF GOSUB @WINBUFFC GOSUB @WINCLOSE INV_F=0 INV_GV=0 INV_CL=0 INV_ME=0 RETURN @ST_INV BF=INV_BF GOSUB @WINBUFFP FOR I=0TO INV_EM-1 FOR J=0TO INV_EM2-1 INV_F[I,J]=0 INV_E[I,J]=1 GPUTCHR I*8+32,J*8,"BGF",ASC("Е"),0,1 NEXT NEXT GOSUB @WINBUFFP2 RETURN @A_INV INV_MX=8*8 INV_MY=4*8 INV_EM=8 INV_EM2=4 DIM INV_E[INV_EM,INV_EM2] DIM INV_F[INV_EM,INV_EM2] DIM INV_TEX[INV_EM,INV_EM2] DIM INV_TEY[INV_EM,INV_EM2] INV_A=1 RETURN @S_INV IF INV_F==1THEN RETURN INV_F=1 WINCLS=1 GOSUB @WINBUFF IF !BF THEN RETURN INV_BF=BF BFC=14 GOSUB @WINBUFFGCLS IF INV_A==0THEN GOSUB @A_INV WINX2=130 WINY2=96+10+1 @INV_INI GOSUB @ST_INV INV_SCO=0 INV_SX=32 INV_SY=0 INV_SF=0 INV_SP=1 INV_GV=0 INV_CF=0 INV_PX=64 INV_PY=96 INV_ME=INV_EM*INV_EM2 WINTTL$="INV RETURN @GV_INV IF INV_GV==1 THEN BGMPLAY 6 INV_GV=2 F=0 IF CLICK3 AND WINACTV AND WINFLG[TSK]==2THEN F=1 IF F THEN BF=INV_BF BFC=14 GOSUB@WINBUFFGCLS GOSUB@INV_INI WINSX=0WINSY=8WINSC=RND(16)WINSTR$="CLICK TO REPLAY"GOSUB @WINSTRPUT GPUTCHR INV_PX+WFX,WFY+96-8,"BGF",42,0,1 RETURN @CL_INV WINSX=0WINSY=8WINSC=0WINSTR$="CLICK TO REPLAY"GOSUB @WINSTRPUT F=0 IF CLICK3 AND WINACTV AND WINFLG[TSK]==2THEN F=1 IF F THEN BF=INV_BF BFC=14 GOSUB@WINBUFFGCLS GOSUB@INV_INI RETURN @WIN_INV GCOPY INV_BF,0,0,128,96,WFX,WFY,1 WINSX=0WINSY=0WINSC=0WINSTR$="SCORE "+STR$(INV_SCO)+"0"GOSUB@WINSTRPUT IF INV_GV THEN @GV_INV IF INV_ME =0AND !INV_CF THEN INV_CF=1BGMPLAY 4 IF INV_CF THEN @CL_INV BF=INV_BF GOSUB @WINBUFFP INV_OSX=INV_SX INV_OSY=INV_SY INV_OSF=INV_SF F=0 IF !INV_SF THEN INV_SX=INV_SX-INV_SP IF INV_SF THEN INV_SX=INV_SX+INV_SP IF INV_SX =1THEN INV_SX=1INV_SF=1 INV_SY=INV_SY+4F=1 BGMPLAY"@151Q1C8" INV_SP=INV_SP*1.2 IF INV_SX =128-64 THEN INV_SX=64INV_SF=0 INV_SY=INV_SY+4F=1 BGMPLAY"@151Q1C8" INV_SP=INV_SP*1.2 GCOPY INV_OSX,INV_OSY,INV_OSX+64,INV_OSY+INV_MY*8,INV_SX,INV_SY,1 IF INV_SF*INV_OSF THEN GFILL INV_OSX-INV_SP,INV_OSY,INV_OSX,INV_SY+INV_MX*8,14 IF (!INV_SF*!INV_OSF) THEN GFILL INV_OSX+64,INV_OSY,128,INV_SY+INV_MX*8,14 IF F THEN GFILL 0,INV_OSY,127,INV_OSY+3,14 IF INV_SY 128THEN INV_GV=1 GOSUB @WINBUFFP2 'GFILL INV_PX+WFX,WFY+96-8,WFX+INV_PX+8,WFY+96,6 GPUTCHR INV_PX+WFX,WFY+96-8,"BGF",5,0,1 B=BUTTON() IF B AND 4THEN INV_PX=INV_PX-2 IF B AND 8THEN INV_PX=INV_PX+2 TP=INV_TP F=0 G=(B AND 16)==16AND (INV_B AND 16)!=16 IF G AND !INV_TF[TP]THEN INV_TF[TP]=1 BGMPLAY"@151Q1 C" F=1 IF F THEN INV_TX[TP]=INV_PX INV_TY[TP]=96-8 INV_TP=(INV_TP+1)%5 FOR I=0TO INV_EM-1 FOR J=0TO INV_EM2-1 IF INV_E[I,J]==2OR INV_F[I,J]==1THEN @INV_SKPP IF INV_E[I,J]==0THEN @INV_SKPPP F=0 IF !RND(100)AND INV_E[I,J]==1THEN BGMPLAY"@151Q1 C"F=1INV_F[I,J]=1 IF F THEN INV_TEX[I,J]=INV_SX+I*8 INV_TEY[I,J]=INV_SY+J*8 ELSE @INV_SKPPP @INV_SKPP INV_TEY[I,J]=INV_TEY[I,J]+3 GFILL WFX+INV_TEX[I,J],WFY+INV_TEY[I,J],WFX+INV_TEX[I,J]+1,WFY+INV_TEY[I,J]+2,15 IF INV_TEY[I,J] 94THEN INV_F[I,J]=0 F=0 IF INV_TEY[I,J] =96-8AND INV_TEY[I,J] =96THEN F=1 IF F AND INV_TEX[I,J] =INV_PX AND INV_TEX[I,J] =INV_PX+8THEN INV_GV=1 @INV_SKPPP NEXT NEXT FOR I=0TO 5'INV_TP TP=I F=0 IF !INV_TF[TP]THEN @INV_SKP IF INV_TF[TP] THEN INV_TY[TP]=INV_TY[TP]-2 F=1 IF F THEN GFILL WFX+INV_TX[TP],INV_TY[TP]+WFY,INV_TX[TP]+2+WFX,INV_TY[TP]-4+WFY,15 IF INV_TF[TP]*(INV_TY[TP] 0)THEN INV_TF[TP]=0 F=0 IF INV_TX[I] =INV_SX AND INV_TX[I] =INV_SX+64AND INV_TY[I] =INV_SY AND INV_TY[I] =INV_SY+42THEN F=1 A=0OR (INV_TX[TP]-INV_SX)/8 C=0OR (INV_TY[TP]-INV_SY)/8 IF F AND A =0AND A INV_MX/8 AND C =0AND C INV_MY/8 THEN IF INV_E[A,C] 0THEN F=2 IF F==2THEN INV_ECX=A INV_ECY=C GOSUB@INV_EC INV_TF[TP]=0 INV_SCO=INV_SCO+1+(0OR INV_SP) @INV_SKP NEXT INV_B=B RETURN @INV_EC GOSUB @WINBUFFP GFILL 0OR INV_ECX*8+INV_SX,0OR INV_ECY*8+INV_SY,0OR INV_ECX*8+INV_SX+7,0OR INV_ECY*8+INV_SY+7,14 INV_E[INV_ECX,INV_ECY]=0 GOSUB @WINBUFFP2 INV_ME=INV_ME-1 RETURN @C_REV BF=REV_BF GOSUB@WINBUFFC GOSUB@WINCLOSE RETURN @D_REV GCIRCLE X*8+3,Y*8+3,3,C GCIRCLE X*8+3,Y*8+3,2,C GCIRCLE X*8+3,Y*8+3,1,C GPSET X*8+3,Y*8+3,C RETURN @P_REV GOSUB@WINBUFFP GCLS 29 FOR I=0TO 7 GLINE I*8-1,0,I*8-1,64,14 GLINE 0,I*8-1,64,I*8-1,14 NEXT FOR I=0TO 7 FOR J=0TO 7 REV_M[I,J]=0 NEXT NEXT REV_M[3,3]=1 REV_M[4,4]=1 REV_M[4,3]=2 REV_M[3,4]=2 C=2X=3Y=3GOSUB @D_REV C=2X=4Y=4GOSUB @D_REV C=4X=4Y=3GOSUB @D_REV C=4X=3Y=4GOSUB @D_REV GOSUB@WINBUFFP2 RETURN ' ('・w・`) マント゛クセ ' FOR,ハイレツナト゛ヲモチイタラ ラクニナルカモタ゛カ゛ @O_8REV X=REV_MX Y=REV_MY @OL_8REV X=X-1Y=Y+1 IF X 0 THEN RETURN IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_8REV RETURN GOTO@OL_8REV @OS_8REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY D=REV_MX Z=X FOR I=Z+1 TO REV_MX-1 K=K+1 D=D-1 Y=K X=D C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_7REV X=REV_MX Y=REV_MY @OL_7REV X=X+1Y=Y-1 IF X 7THEN RETURN IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_7REV RETURN GOTO@OL_7REV @OS_7REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX+1 TO Z-1 K=K-1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_6REV X=REV_MX Y=REV_MY @OL_6REV X=X+1Y=Y+1 IF X 7THEN RETURN IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_6REV RETURN GOTO@OL_6REV @OS_6REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX+1 TO Z-1 K=K+1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_5REV X=REV_MX Y=REV_MY @OL_5REV X=X-1Y=Y-1 IF X 0 THEN RETURN IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_5REV RETURN GOTO@OL_5REV @OS_5REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX-1 TO Z+1 STEP -1 K=K-1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_4REV X=REV_MX Y=REV_MY @OL_4REV Y=Y+1IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_4REV RETURN GOTO@OL_4REV @OS_4REV F=1 Z=Y IF REV_OF==1THEN RETURN FOR I=REV_MY+1 TO Z-1 X=REV_MX Y=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_3REV X=REV_MX Y=REV_MY @OL_3REV X=X+1IF X 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_3REV RETURN GOTO@OL_3REV @OS_3REV F=1 Z=X IF REV_OF==1THEN RETURN FOR I=REV_MX+1 TO Z-1 Y=REV_MY X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_2REV X=REV_MX Y=REV_MY @OL_2REV Y=Y-1IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_2REV RETURN GOTO @OL_2REV @OS_2REV F=1 Z=Y IF REV_OF==1THEN RETURN FOR I=Z+1 TO REV_MY-1 X=REV_MX Y=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_1REV X=REV_MX Y=REV_MY @OL_1REV X=X-1 IF X 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_1REV RETURN GOTO @OL_1REV @OS_1REV F=1 IF REV_OF==1THEN RETURN Z=X FOR I=Z+1 TO REV_MX-1 X=I Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_REV F=0 IF REV_M[REV_MX,REV_MY]!=0THEN RETURN IF REV_MX==0THEN @O_REV2 IF REV_M[REV_MX-1,REV_MY]==REV_C THEN GOSUB@O_1REV @O_REV2 IF REV_MY==0THEN @O_REV3 IF REV_M[REV_MX,REV_MY-1]==REV_C THEN GOSUB@O_2REV @O_REV3 IF REV_MX==7THEN @O_REV4 IF REV_M[REV_MX+1,REV_MY]==REV_C THEN GOSUB@O_3REV @O_REV4 IF REV_MY==7THEN @O_REV5 IF REV_M[REV_MX,REV_MY+1]==REV_C THEN GOSUB@O_4REV 'л ' ○ ' @O_REV5 IF REV_MX==0THEN @O_REV6 IF REV_MY==0THEN @O_REV6 IF REV_M[REV_MX-1,REV_MY-1]==REV_C THEN GOSUB@O_5REV @O_REV6 IF REV_MX==7THEN @O_REV7 IF REV_MY==7THEN @O_REV7 IF REV_M[REV_MX+1,REV_MY+1]==REV_C THEN GOSUB@O_6REV @O_REV7 IF REV_MX==7THEN @O_REV8 IF REV_MY==0THEN @O_REV8 IF REV_M[REV_MX+1,REV_MY-1]==REV_C THEN GOSUB@O_7REV @O_REV8 IF REV_MX==0THEN @O_REV9 IF REV_MY==7THEN @O_REV9 IF REV_M[REV_MX-1,REV_MY+1]==REV_C THEN GOSUB@O_8REV @O_REV9 REV_OF=0 RETURN @A_REV DIM REV_M[8,8] 'ハイレツセンケ゛ン DIM REV_J[8,8] 'ハイレツセンケ゛ン DIM REV_C[8,8] 'ハイレツセンケ゛ン DIM REV_D[8,8] 'ハイレツセンケ゛ン RETURN @S_REV GOSUB@WINBUFF 'ハ゛ッファカクホ IF BF==0 THEN RETURN 'エラ-ショリ REV_BF=BF BFC=29 'GCLSスルイロ GOSUB@WINBUFFGCLS WINCLS=1 '@C_ハソンサ゛イシテイマス IF REV_A==0 THEN GOSUB@A_REV REV_A=1 REV_END=0 REV_PASS=0 REV_CPASS=0 WINX2=64 WINY2=74 REV_J=1REV_JC=2REV_C=2REV_CC=4 GOSUB@P_REV WINTTL$="REV RETURN @WIN_REV BF=REV_BF GCOPY REV_BF,0,0,62,62,WFX,WFY,1 GOSUB@WINBUFFP REV_MX=0OR(MOUSEX-WFX)/8 REV_MY=0OR(MOUSEY-WFY)/8 IF REV_MX 0OR REV_MX 7OR REV_MY 0OR REV_MY 7THEN @SKP_REV F=0 ' IF REV_PASS THEN GOSUB @REV_COM REV_OKEN=0 REV_PASS=0 ' IF REV_CPASS THEN REV_CPASS=0 REV_COKEN=0 G=0 ' IF CLICKR AND REV_M[X,Y]==REV_J THEN X=REV_MX Y=REV_MY C=29 GOSUB @D_REV REV_M[X,Y]=0G=1 ' IF CLICKR AND REV_M[X,Y]==REV_C THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J G=1 X=REV_MX Y=REV_Y IF CLICKR AND REV_M[X,Y]==0 THEN X=REV_MX Y=REV_MY C=REV_CC GOSUB @D_REV REV_M[X,Y]=REV_C G=1 REV_J=1REV_JC=2REV_C=2REV_CC=4 IF CLICK THEN GOSUB@O_REV IF G GOTO @SKP_REV IF F THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J IF F THEN GOSUB@REV_COM @SKP_REV GOSUB@WINBUFFP2 RETURN @OKC_REV KKK=0 FOR I=0TO 7 FOR J=0TO 7 REV_MX=I REV_OF=1 F=0 GOSUB @O_REV REV_J[I,J]=F KKK=KKK+F NEXT NEXT REV_OKEN=!KKK RETURN @REV_COM GPAGE 0,M,M GCOPY REV_BF,0,0,62,62,WFX,WFY,1 GOSUB @OKC_REV KKK=0 KKD=0 SWAP REV_J,REV_C SWAP REV_JC,REV_CC FOR I=0TO 7 FOR J=0TO 7 REV_MX=I REV_MY=J REV_OF=1 F=0 GOSUB @O_REV REV_C[I,J]=F REV_D[I,J]=F==1AND REV_J[I,J]==1 KKK=KKK+F KKD=KKD+REV_D[I,J] NEXT NEXT REV_COKEN=!KKK GOSUB@WINBUFFP 'IF REV_COKEN THEN REV_CPASS=1 ELSE REV_CPASS=0 'IF REV_COKEN THEN SWAP REV_J,REV_C SWAP REV_JC,REV_CC RETURN @REV_COML 'GPAGE 0,M,M 'GCOPY REV_BF,0,0,62,62,WFX,WFY,1 REV_OF=0 RX=RND(8) RY=RND(8) REV_MX=RX REV_MY=RY F=0 GOSUB@O_REV IF F THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J IF F THEN @REV_COM2 GOTO @REV_COML @REV_COM2 SWAP REV_J,REV_C SWAP REV_JC,REV_CC 'GPAGE 0,M,M 'GFILL WFX+X*8,WFY+Y*8,WFX+X*8+2,Y*8+2+WFY,REV_CC 'WAIT 50 GOSUB @OKC_REV IF REV_OKEN THEN REV_PASS=1ELSE REV_PASS=0 GOSUB@WINBUFFP FOR I=0TO 7 FOR J=0TO 7 X=I Y=J C=29 IF REV_M[I,J]==REV_C THEN C=REV_CC IF REV_M[I,J]==REV_J THEN C=REV_JC GOSUB @D_REV NEXT NEXT RETURN '-------SYSTEM APPLICATION----- @S_ABOUT WINX2=130 WINY2=48 WINCLS=1 WINTTL$="ABOUT @C_ABOUT RETURN @WIN_ABOUT WINSY=0 WINSX=0 WINSC=1 WINSTR$=MID$(VERSION$,0,16) GOSUB @WINSTRPUT WINSC=1 WINSY=8 WINSTR$=MID$(VERSION$,16,15) GOSUB @WINSTRPUT WINBY=16 WINBX=62-8 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @WINCLOSE WINSC=1 WINSY=27 WINSX=0 WINSTR$="(C)2011-2013otya" GOSUB @WINSTRPUT RETURN 'SYSTEM ERROR @SYS_ERR_BUFF WINNAME$[TSK]="BUFF WINTTL$[TSK]="BUFF RETURN @WIN_BUFF ' WINNAME$[TSK]="SYS_ERR ' WINM[TSK]=-1 ERRN$="Out of buffer ERRT$="ハ゛ッファフ゛ソク GOSUB @WIN_SYS_ERR RETURN @C_SYS_ERR GOSUB @WINCLOSE RETURN 'ARRAY SET @A_SYS_ERR DIM OTWERRT$[TSKMAX] DIM OTWERRN$[TSKMAX] RETURN @S_SYS_ERR IF OTWERR==0THEN GOSUB @A_SYS_ERR OTWERR=1 OTWERRT$[OTWERR_M]=ERRT$ OTWERRN$[OTWERR_M]=ERRN$ WINMLT[TSK]=OTWERR_M OTWERR_M=OTWERR_M RETURN @WIN_SYS_ERR ' P=WINMLT[TSK] ' WINM[TSK]=1 WINTTL$[TSK]=ERRT$'="ハ゛ッファフ゛ソク WINY2=26+WINDEGY2+WINDEGY WINX2=LEN("Sorry, a system error")*8+WINDEGX+WINDEGX2 WINSX=0 WINSY=0 WINSC=1 WINSTR$="Sorry, a system error" GOSUB @WINSTRPUT WINSC=1 WINSY=8 WINSTR$="type "+ERRN$'Out of buff" GOSUB @WINSTRPUT WINBX=0 WINBY=16 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @WINCLOSE RETURN '---コンソ-ルアフ゜リ @S_COMDBG RETURN @WIN_COMDBG WINSC=1 WINSTR$="A" GOSUB @WINSTRPUT RETURN @S_COM WINTTL$="COMMAND" COMINPUT$="@WIN_COM_INPUT WINMODE=1 WIN_MODE=1 GOSUB @WINFLAG WINCOMF=1 WINCOMX2=128+8 WINCOMY2=191-8 WINX2=128+8 WINY2=192-8 GOSUB @COMWINDOW 'WINCOMSCY=19 RETURN @WIN_COM WINDESIGN$="NORMAL WINBG=14 GOSUB @WINDOW IF !WINEND THEN WINSCX=(0OR WINSCX/8)*8 WINSCY=(0OR WINSCY/8)*8 WINCOMSX=0OR WINSCX/8WINCOMSY=0OR WINSCY/8 WFX=(0OR WFX/8)*8 WFY=(0OR WFY/8)*8 BGOFS 0,511-WFX+WINCOMSCX*8,511-WFY+WINCOM ' BGOFS WINCOMR,511-WINCOMSX*8+WINCOMSCX*8,511-WINCOMSY*8+WINCOM GOTO @COMSKP ' WX=WINCOMSX WY=WINCOMSY ' WX2=WINCOMSX+WINCOMX2 WY2=WINCOMSY+WINCOMY2 ' F=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1AND MOUSEY =WY AND MOUSEY =WY2 THEN F=2 IF F==2AND CLICK==1THEN GOSUB @WINSWP F=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1AND MOUSEY =WY AND MOUSEY =WY+8THEN F=2 IF F==2AND CLICK==1THEN WINCOMMVF=1 IF WINCOMF==0THEN @S_COM @COMSKP IF WINIDFLG==1THEN RETURN WINCOMX22=0OR WINCOMX2/8 WINCOMY22=0OR WINCOMY2/8-1 B=BUTTON() IF B==1THEN WINCOMSCY=WINCOMSCY-1 IF B==2THEN WINCOMSCY=WINCOMSCY+1 GOSUB @WINCOMSCRY IF B==4THEN WINCOMSCX=WINCOMSCX-1' GOSUB @WIN_COM_ECHO IF B==8THEN WINCOMSCX=WINCOMSCX+1' GOSUB @WIN_COM_ECHO 'IF WINCOMSCY -(SCY+FLOOR(WINCOMY2/8))THEN WINCOMSCY=-(SCY+FLOOR(WINCOMY2/8)) ' IF WINCOMSCY 63-(SCY+FLOOR(WINCOMY2/8)) THEN WINCOMSCY=63-(SCY+FLOOR(WINCOMY2/8)) ' IF WINCOMSCY -SY THEN WINCOMSCY= ' IF WINCOMSCY 21-CY THEN WINCOMSCY=21-CY ' IF SCYY =0 THEN WINCOMSCY=0 ' IF WINCOMSCY+CY 0THEN WINCOMSCY=0 ' IF WINCOMSCY 63-WINCOMY22-6 THEN WINCOMSCY=63-WINCOMY22-6 IF WINCOMSCX 0THEN WINCOMSCX=0 IF WINCOMSCX 63-WINCOMX22 THEN WINCOMSCX=63-WINCOMX22 ' IF CY (FLOOR(WINCOMY2/8))THEN WINCOMSCY=21-CY IF WINCOMMVF==1THEN GOSUB @WIN_COM_MOV ' COMCOM=COMCOM+1 ' COMP$="TST"+STR$(COMCOM) GOSUB COMPRT$ ' GFILL WINCOMSX,WINCOMSY,WINCOMX2+WINCOMSX,WINCOMY2+WINCOMSY,14 KEYFLG=KEYFLG+(WINACTV==1) I$="" IF KEYBF$!=""AND WINACTV==1THEN I$=KEYBF$ KEYBF$="" GOSUB @WIN_COM_IN RETURN @WINCOMSCRY IF WINCOMSCY CY THEN COM$[WINCOMSCY]="" RETURN @WIN_COM_INPR WIN_COM_IN$="" COMP$=COMDIR$+" " COMKF=0 GOSUB COMPRT$ RETURN @WIN_COM_IN F=0 IF INSTR(I$,CHR$(13))!=-1THEN GOSUB @WINCMDRUN WIN_COM_IN$=WIN_COM_IN$+I$ COMCOM=RND(524287)'SCY COMP$=I$'STR$(COMCOM)+","+STR$(CYY) COMKF=0 GOSUB COMPRT$ 'CY=CY-1 IF F==1THEN GOSUB COMPRT$ GOSUB @WIN_COM_INPR RETURN @WINCMDRUN I$=MID$(I$,0,INSTR(I$,CHR$(13))) F=1 ' CY=CY+1 GOSUB COMPRT$ CMD$=WIN_COM_IN$ GOSUB @CMDRUN IF CMD$[0]=="TITLE"THEN WINTTL$=CMD$[1] IF NOCMD==0THEN GOSUB CMDL$ RETURN @WIN_COM_MOV WINCOMSX=(0OR MOUSEX/8)*8 WINCOMSY=(0OR MOUSEY/8)*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY-SCYY*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY+SCYY*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY+SCYY*8+WINCOMSCY*8-8 ' BGFILL 1,0,0,WINCOMX2/8,WINCOMY2/8,255,0,0,0 '?MOUSEX,MOUSEY 'GFILL 0,0,WINCOMX2,WINCOMY2,OTWBGCL IF CLICK2==0THEN WINCOMMVF=0 RETURN @COMWINDOW OTW=1 BGFILL WINCOMR,0,0,WINCOMX2/8,WINCOMY2/8,0,0,0,0 COMPRT$="@COM_ECHO ' COMP$="OTYAX-COMMAND ' GOSUB COMPRT$ ' COMP$="alpha" ' GOSUB COMPRT$ GOSUB @COM_COM ' GFILL 0,0,255,191,OTWBGCL GOSUB @WIN_COM_INPR RETURN @WIN_COM_INPUT COM_IN_B$=COM$[CY] COM_I_INK$="" COMI$="" @WIN_COM_INPUTL COM_I_INK$=INKEY$() IF COM_I_INK$==CHR$(13)THEN RETURN IF COM_I_INK$!=""THEN COMI$=COMI$+COM_I_INK$ COM$[CY]=COM_IN_B$+COMI$ COMKF=0COMP$=""GOSUB COMPRT$ GOTO @WIN_COM_INPUTL RETURN WIN_COM_IN_MX=LEN(COM$[CY]) WIN_COM_IN_X=0 WIN_COM_IN_I$="" GPAGE 0,M,M FOR WIN_COM_IN_I=0TO 1 WIN_COM_IN_I=0 WY=WINCOMSY+8+WINCOMZY*8 'GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,0 IF BUTTON()==4AND WIN_COM_IN_X WIN_COM_IN_MX THEN WIN_COM_IN_X=WIN_COM_IN_X-1 IF BUTTON()==8AND WIN_COM_IN_X 32THEN WIN_COM_IN_X=WIN_COM_IN_X+1 'GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,15 FOR WIN_COM_IN_J=0TO 3 WIN_COM_IN_KEY=KEYBOARD WIN_COM_IN_K$=INKEY$() IF LEN(WIN_COM_IN_K$)THEN GOSUB @WIN_COM_IN_K '?WIN_COM_IN_I$ VSYNC 1 NEXT NEXT GPAGE 0,M,!M RETURN @WIN_COM_IN_K GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,0 WIN_COM_IN_I$=MID$(WIN_COM_IN_I$,0,WIN_COM_IN_X)+WIN_COM_IN_K$+MID$(WIN_COM_IN_I$,WIN_COM_IN_X,256) IF WIN_COM_IN_X 32THEN WIN_COM_IN_X=WIN_COM_IN_X+1 RETURN @WIN_COM_ECHO A=FLOOR(WINCOMX2/8+WINCOMSX/8)-1 B=FLOOR(WINCOMY2/8+WINCOMSY/8) IF A =32THEN A=31 IF B =24THEN B=23 'BGCLIP 0OR(WINCOMSX/8),0OR(WINCOMSY/8)+1,A,B A=FLOOR(WFX2/8)-1 B=FLOOR(WFY2/8) C=0OR(WFX/8) D=0OR(WFY/8) IF A 0THEN A=0 IF B 0THEN B=0 IF C 0THEN C=0 IF D 0THEN D=0 IF A 31THEN A=31 IF B 23THEN B=23 IF C 31THEN C=31 IF D 23THEN D=23 BGCLIP C,D,A,B ' CY=CY%65 SCY=CY-(0OR (WINCOMY22)) IF SCY 0THEN SCY=0 SCYY=CY-(0OR (WINCOMY22)) ' SCY=SCY%(65-FLOOR(WINCOMY22)) IF CY (FLOOR(WINCOMY22))THEN SCY=0 SCYY=0 WINCMDF=0 IF CY =63THEN WINCMDF=1 CY=63 SCY=64-WINCOMY22 'GOSUB @WIN_COM_ECHO_S SCYYY=SCYY WINCOM=(SCYY*8)+WINCOMSCY*8 IF WINCMDF==1THEN WINCOM=WINCOM+8 IF WINCMDF THEN IF COMKF==1THEN GOSUB@WINCOMBGC SCYYY=63 ELSE SCYYY=63 ' WINCOMZY=(*1)*(!WINCMDF))+(63*WINCMDF) ' COM$[(*2)+1)%64]="" FOR I=SCY TO ((SCY+FLOOR(WINCOMY22))*(!WINCMDF))+(63*WINCMDF) K=0 ' IF I =64THEN I=99999 GOTO @WIN_COM_ECHO_SKP M$=COM$[I] IF I==CY THEN WINCOMZY=I-FLOOR(((WINCOMSY+WINCOM)/8)) J=0 FOR J=0 TO 63'(WINCOMX2/8)+WINCOMSCX-1 IF MID$(M$,J,1)==""THEN BGFILL WINCOMR,J,I,63,I,32 A=0 J=64 GOTO@WINCOMECHOSKP A=ASC(MID$(M$,J,1)) BGPUT WINCOMR,J,I,A ' IF ((J+1)%32)==0THEN K=K+1 @WINCOMECHOSKP NEXT 'I=I+3 @WIN_COM_ECHO_SKP NEXT ' BGOFS WINCOMR,511-WINCOMSX*8+WINCOMSCX*8,511-WINCOMSY*8+WINCOM 'IF CY =64THEN CY=0 ' IF WINCOM =0 THEN WINCOM=0 ' GFILL WINCOMSX,WINCOMSY,WINCOMX2+WINCOMSX,WINCOMY2+WINCOMSY,14 RETURN 0 - 0=1 1 - 1=2 2 - 3 - 4 - 5 - 6 - 6=7 7 - 7 @WIN_COM_ECHO_S FOR I=0TO 62 COM$[I]=COM$[I+1] NEXT COM$[63]="" RETURN @WINCOMBGC BGCOPY WINCOMR,0,1,63,63,0,0 'COMKF=1 RETURN FOR COM_Y=1TO 63 FOR COM_X=0TO 63 BGREAD(WINCOMR,COM_X,COM_Y),S BGPUT WINCOMR,COM_X,COM_Y-1,S NEXT NEXT RETURN @COM_ECHO K=0 IF CX+LEN(COMP$) 31THEN K=1 IF CY =63AND OTW==1AND COMKF==1 THEN GOSUB @WIN_COM_ECHO_S IF CY 63THEN CY=63 CX=LEN(COM$[CY]) COM$[CY]=MID$(COM$[CY],0,CX)+COMP$ '(32*(0OR(CX/32))),(32*(0OR(CX/32))))+COMP$ ' CX=CX+LEN(COMP$) 'CX=CX+LEN(COM$[CY]) CY=CY+(COMKF==1) ' IF CY =62 THEN ELSE COM$[CY+1]="" 'CX=CX CYY=CYY+(COMKF==1) IF OTW==1THEN GOSUB @WIN_COM_ECHO COMKF=1 ' IF WINCMDF==1 AND COM_IF==0 THEN COM_IF=2 COMP$="" GOSUB COMPRT$ COM_IF=0 ' IF COM_IF==2 THEN COM_IF=1 RETURN COMP$="" RETURN 'OTYAXWINDOWMANUAL @MANUAL アフ゜リ '------------- '@S_NAME WINX2= WINY2= RETURN '@WIN_NAME RETURN '------------- '------------- '@S_NAME WIN_MODE=1GOSUB @WINFLAG WINX2= WINY2= RETURN '@WIN_NAME 'WINDESIGN$="VISUAL GOSUB @WINDOW IF WINIDFLG==1THEN RETURN RETURN '------------- @M_SAMPLE HELLO,WORLD!! @S_S_HL RETURN @WIN_S_HL WINSX=0 WINSY=0 WINSC=1 WINSTR$="Hello" GOSUB @WINSTRPUT RETURN 1LINE EDITOR @S_S_1LINE WINX2=128 WINY2=20 WINTTL$="1LINE EDITOR RETURN @WIN_S_1LINE WINTX=0 WINTY=0 WINTX2=116 WINTSX=WIN1LINEX WINTA=WIN1LINEA WINTXTP$=WIN1LINE$ GOSUB @WINTXTBOX WIN1LINE$=WINTXT$ WIN1LINEX=WINTSX WIN1LINEA=WINTA RETURN ハッカッタッノッシオ @S_S_HKT WINX2=52 WINY2=20 RETURN @WIN_S_HKT WINBX=0 WINBY=0 WINBSTR$="CLICK!" GOSUB @WINBTN IF WINBTNF THEN TALK"@T50ハ!/カ!/タ!/ノ!/@T50シ./オ! RETURN @S_S_V WIN_MODE=1 WINTTL$="ウイテル... GOSUB @WINFLAG WINX2=116 WINY2=24 RETURN @WIN_S_V WINDESIGN$="VISUAL WINBG=1 GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=0 WINSTR$="タタ゛シNORMALニカキ゛ル GOSUB @WINSTRPUT RETURN @M_API @MWINSTRPUT WINSX=サ゛ヒョウ WINSY=サ゛ヒョウ WINSC=ハ゜レット WINSTR$=モシ゛ -ナシ @MWINBTN WINBX=サ゛ WINBY=サ WINBSTR$=モシ゛ - WINBTNF=オサレタカ @MWINPROGBAR WINPX,WINPY,WINPX2,WINPY2 WINPS=サイタ゛イ @MWINCHKBOX WINCX,WINCY WINCSTR$= WINCHKF=オサレテイルカ WINCHKF=オサレタカ @T @TEMPLATE DATA"@C_{N} DATA" GOSUB@WINCLOSE DATA"RETURN DATA"@S_{N} DATA" WINX2={X2} DATA" WINY2={Y2} DATA"RETURN DATA"@WIN_{N} DATA"RETURN DATA END @TEMPLATE2 ACLS CLEAR DATA"@C_{N} DATA" BF={N}_BF DATA" GOSUB@WINBUFFC DATA" GOSUB@WINCLOSE DATA"RETURN DATA"@A_{N} DATA" {DIM} DATA"'DIM 'ハイレツセンケ゛ン DATA"RETURN DATA"@S_{N} DATA" GOSUB@WINBUFF 'ハ゛ッファカクホ DATA" IF BF==0 THEN RETURN 'エラ-ショリ DATA" {N}_BF=BF DATA" BFC=15 'GCLSスルイロ DATA" GOSUB@WINBUFFGCLS DATA" WINCLS=1 '@C_ハソンサ゛イシテイマス DATA" IF {N}_A==0 THEN GOSUB@A_{N} DATA" {N}_A=1 DATA" WINX2={X2} DATA" WINY2={Y2} DATA"RETURN DATA"@WIN_{N} DATA" GCOPY {N}_BF,0,0,WFX-WINSCX,WFY-WINSCY,WFX,WFY DATA" GOSUB@WINBUFFP DATA" GOSUB@WINBUFFP2 DATA"RETURN DATA END DIM VARN$[256] DIM VAR$[256] LBL$="@TEMPLATE2 @TEMPLATECOM INPUT"NAME?(VARSET→V,PREV→P,LABEL→@)";N$ IF N$=="V"THEN GOTO@TEMPLATEVARSET IF N$=="P"THEN GOTO@TEMPLATEP IF N$=="@"THEN INPUT"LABEL(NOT @)";L$ LBL$="@"+L$ GOTO@TEMPLATECOM RESTORE LBL$ VARN$[0]="N" VAR$[0]=N$ J=0 FOR I=0TO 1 READ R$ IF R$!="END"THEN I=0 GOSUB@TEMPLATECHK NEXT FOR I=1TO F+1 KEY I,F$[I-1] NEXT END @TEMPLATECHK GOSUB @TEMPLATEVAR IF LEN(R$)+1+LEN(F$[F]) 255THEN F=F+1 L=L+1 ?L*10" "R$ F$[F]=F$[F]+R$+CHR$(13) RETURN @TEMPLATEVAR SX=-1 FOR J=0TO LEN(R$)-1 IF MID$(R$,J,1)=="{"AND SX==-1THEN SX=J+1 IF MID$(R$,J,1)=="}"AND SX -1THEN EX=J-1 GOSUB@TEMPLATEVAR2 SX=-1 EX=-1 NEXT RETURN @TEMPLATEVAR2 VN$=MID$(R$,SX,EX-SX+1) FOR K=0TO 255 IF VARN$[K]==VN$THEN R$=MID$(R$,0,(SX-1 =0)*(SX-1))+VAR$[K]+MID$(R$,EX+2,256) NEXT RETURN @TEMPLATEVARSET LINPUT"VARNAME?(RETURN→RT)";VN$ IF VN$=="RT"THEN GOTO @TEMPLATECOM LINPUT"VALUE?";VL$ V=V+1 VARN$[V]=VN$ VAR$[V]=VL$ GOTO @TEMPLATEVARSET @TEMPLATEP RESTORE LBL$ FOR I=0TO 1 READ R$ IF R$!="END"THEN I=0GOSUB@TEMPLATEVAR ?R$ NEXT RESTORE LBL$ GOTO@TEMPLATECOM @C_HTN GOSUB@WINCLOSE TALK "ウワアアアトシ゛ルナアアア RETURN @S_HTN WINCLS=1 WINX2=128 WINY2=128 WINTTL$="Hello,[[OTYAX]]" HTN_F=0 HTN_X=0 WINMLT[TSK]=HTN_I HTN_I=(HTN_I+1)%10 RETURN @WIN_HTN I=WINMLT[TSK] WINSX=HTN_X[I] WINSY=0 WINSC=1 WINSTR$="Hello,World!!"*!HTN_F[I]+"hatenahageta"*HTN_F[I] GOSUB @WINSTRPUT HTN_X[I]=(HTN_X[I]+1)%128 WINBX=8 WINBY=8 WINBSTR$="hatena" GOSUB @WINBTN IF WINBTNF THEN HTN_F[I]=1 WINEXE$="HTN" GOSUB @WINEXE RETURN @C_HTNP BF=HTNP_BF GOSUB@WINBUFFC GOSUB @WINCLOSE RETURN @S_HTNP WINX2=130 WINY2=107+8 WINCLS=1 GOSUB @WINBUFF IF !BF THEN RETURN HTNP_BF=BF HTNP_C=0 HTNP_P=0 BFC=15 GOSUB @WINBUFFGCLS WINTTL$="HNPAINT" RETURN @WIN_HTNP7 IF CLICK3 THEN GCLS HTNP_CL RETURN @WIN_HTNP6 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0 IF CLICK2 THEN GOSUB@WINBUFFP2 GCIRCLE HTNP_X+WFX,HTNP_Y+WFY,MOUSEX-HTNP_X-WFX,HTNP_CL IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GCIRCLE HTNP_X,HTNP_Y,MOUSEX-HTNP_X-WFX,HTNP_CL RETURN @WIN_HTNP5 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GFILL HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GFILL HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP4 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GBOX HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GBOX HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP3 IF CLICK3 THEN GPAINT MOUSEX-WFX,MOUSEY-WFY,HTNP_CL RETURN @WIN_HTNP2 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GLINE HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GLINE HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP1 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY FOR I=1TO CLICK2==1 GLINE HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 NEXT IF CLICK2 THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY RETURN @WIN_HTNP BF=HTNP_BF HTNP_CL=HTNP_C+HTNP_P*16 GCOPY BF,0,0,120,88,WFX,WFY,1 GOSUB@WINBUFFP F=0 IF MOUSEX =WFX AND MOUSEX =WFX+120 THEN F=1 IF F==1AND MOUSEY =WFY AND MOUSEY =WFY+88THEN F=2 IF F!=2 THEN @HTNP_S ON HTNP_M GOSUB @WIN_HTNP1,@WIN_HTNP2,@WIN_HTNP3,@WIN_HTNP4,@WIN_HTNP5,@WIN_HTNP6,@WIN_HTNP7 @HTNP_S GOSUB@WINBUFFP2 FOR I=0TO 15 GFILL WFX+I*8,WFY+88,WFX+I*8+8,WFY+96,I+16*HTNP_P NEXT GBOX WFX-1,WFY-1,WFX+120,WFY+88,14 GBOX WFX+HTNP_C*8,WFY+88,WFX+HTNP_C*8+8,WFY+96,14 F=0 IF MOUSEX =WFX AND MOUSEX =WFX2 THEN F=1 IF F==1AND MOUSEY =WFY+88AND MOUSEY =WFY+96 THEN F=2 IF F==2AND CLICK THEN HTNP_C=0OR(MOUSEX-WFX)/8 WINSTR$="0123456789ABCDEF" WINSX=0 WINSY=97 WINSC=1 GOSUB @WINSTRPUT F=0 IF MOUSEX =WFX AND MOUSEX =WFX2 THEN F=1 IF F==1AND MOUSEY =WFY+96AND MOUSEY =WFY+104THEN F=2 IF F==2AND CLICK THEN HTNP_P=0OR(MOUSEX-WFX)/8 GBOX WFX+HTNP_P*8,WFY+96,WFX+HTNP_P*8+8,WFY+104,14 WINBX=120 WINBY=0 WINBSTR$="→" GOSUB @WINBTN F=0 IF WINBTNF==1THEN HTNP_PL=!HTNP_PL IF HTNP_PL==1THEN @HTNP_M RETURN @HTNP_M WINMX=128 WINMX2=128+64 WINMY=8 WINMK=HTNP_MK WINMKS=HTNP_MKS WINMMAX=6 WINM$[0]="PSET WINM$[1]="LINE WINM$[2]="PAINT WINM$[3]="BOX WINM$[4]="FILL WINM$[5]="CIRCLE WINM$[6]="GCLS GOSUB @WINMENU2 HTNP_MK=WINMK HTNP_MKS=WINMKS IF WINM!=-1AND CLICK AND HTNP_MK==0THEN HTNP_M=WINM RETURN @S_WWWW RETURN @WIN_WWWW WINEXE$="MAC IF WINACTV THEN GOSUB @WINEXE RETURN @S_HAHAHA HAHAHAL$="CコCヤCツEメAハAハAR8ハDコDヤDツFメGハGハGR4ハGハGハG#ハAコAヤAツG#メG2ハB2ハC1ハ HAHAHAX=0 WINY2=74 WINTTL$="コヤツメ RETURN @WIN_HAHAHA IF BGMCHK(2)==0THEN @WIN_HAHAHAS GPUTCHR WFX,WFY,"BGF",ASC(HEHEHE$),1,8 RETURN @WIN_HAHAHAS IF HAHAHAX =LEN(HAHAHAL$) THEN HAHAHAX=0 HAHAHAM$="" J=HAHAHAX D=0 FOR I=J TO LEN(HAHAHAL$)-1 M$=MID$(HAHAHAL$,I,1) IF ASC(M$) =ASC("ヲ") AND ASC(M$) =ASC("ン")THEN I=999 HEHEHE$=M$ ELSE HAHAHAM$=HAHAHAM$+M$ NEXT HAHAHAX=HAHAHAX+LEN(HAHAHAM$)+1 BGMSET 128,HAHAHAM$ BGMPLAY 2,128 RETURN @S_POKOPOKO WINX2=170 WINTTL$="POKOPOKO IF POKOF==0THEN DIM POKOE[5] POKOTM=1024 POKOTTL=1 RETURN TTLロシ゛ック @TTL_POKOPOKO WINSX=0WINSY=0WINSC=1 WINSTR$="ЖPOKOPOKOЁ GOSUB @WINSTRPUT WINSX=0WINSY=8WINSC=1 WINSTR$="SCORE Ж+10,И+20,г-10 GOSUB @WINSTRPUT WINSX=0WINSY=16WINSC=1 WINSTR$="TIME Р+10 GOSUB @WINSTRPUT WINSX=0WINSY=24 WINSTR$="CLICK TO START" WINSC=RND(16) GOSUB @WINSTRPUT IF MOUSEX =WFX AND MOUSEX =WFX2 AND MOUSEY =WFY AND MOUSEY =WFY2 AND CLICK THEN POKOTTL=0 RETURN @WIN_POKOPOKO IF POKOTTL THEN @TTL_POKOPOKO 'アナ FOR I=0TO 4 GCIRCLE WFX+8+16+I*32,WFY+16+16,16,9 NEXT WINSX=0WINSY=0WINSC=1WINSTR$="SCORE "+STR$(POKOS)+"0TIME "+STR$(POKOT)GOSUB @WINSTRPUT IF POKOE THEN WINSX=0WINSY=8WINSC=1WINSTR$="TIME UP нCLICK TO RESTART"GOSUB @WINSTRPUT IF POKOE THEN IF CLICKR AND WINACTV THEN POKOE=0POKOS=0POKOT=0 ELSE RETURN 'IFノラレツ・・・ シ゛ツニキタナイ FOR I=0TO 4 IF POKOE[I]==0AND RND(100)==0THEN POKOE[I]=1 POKOT[I]=POKOT+10 R=RND(200) IF POKOE[I]==0AND R==1THEN POKOE[I]=2 POKOT[I]=POKOT+10 IF POKOE[I]==0AND R==2THEN POKOE[I]=4 POKOT[I]=POKOT+10 IF POKOE[I]==0AND R==0THEN POKOE[I]=3 POKOT[I]=POKOT+10 IF POKOE[I]==1THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("Ж"),1,4 IF POKOE[I]==2THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("И"),1,4 IF POKOE[I]==3THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("г"),1,4 IF POKOE[I]==4THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("Р"),1,4 F=0 IF MOUSEX =WFX+16+32*I AND MOUSEX =WFX+48+32*I THEN F=1 IF F==1AND MOUSEY =WFY+16 AND MOUSEY =WFY+48 THEN F=2 IF F==2AND CLICK AND POKOE[I]==1THEN BEEP 3 POKOE[I]=0 POKOS=POKOS+1 IF F==2AND CLICK AND POKOE[I]==2THEN BEEP 5 POKOE[I]=0 POKOS=POKOS+2 IF F==2AND CLICK AND POKOE[I]==4THEN BEEP 15 POKOE[I]=0 POKOT=POKOT-10 IF F==2AND CLICK AND POKOE[I]==3THEN BEEP 14 POKOE[I]=0 POKOS=POKOS-1 IF POKOE[I]==3AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==2AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==1AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==0AND POKOT POKOT[I] THEN POKOE[I]=0 NEXT IF POKOT 0THEN POKOT=0 POKOT=POKOT+1 IF POKOT =POKOTM THEN POKOE=1 RETURN @S_SCRBAR K=32 DIM SCRBART$[K] SCRBART$[0]="アホ"SCRBART$[1]="タ゛ナ"SCRBART$[2]="テ゛ス"SCRBART$[3]="マア"SCRBART$[4]="コケコッコ" SCRBART$[5]="ホレホレ"SCRBART$[6]="ト゛ス"SCRBART$[7]="コンニチハ"SCRBART$[8]="フ゜チコン"SCRBART$[9]="ホ゛-ン" SCRBART$[10]="フフフ"SCRBART$[11]="ニヤリ"SCRBART$[12]="ケ゛ロ"SCRBART$[13]="ネコ"SCRBART$[14]="セイコウ" SCRBART$[15]="シッハ゜イ"SCRBART$[16]="セイミツ"SCRBART$[17]="キク゛"SCRBART$[18]="ケケケ"SCRBART$[19]="コショウ" SCRBART$[20]="ウソ"SCRBART$[21]="テ゛ス"SCRBART$[22]="YOU!"SCRBART$[23]="ムムム"SCRBART$[24]="OTYAX" SCRBART$[25]="フヘフヘ"SCRBART$[26]="ワン"SCRBART$[27]="ワイン"SCRBART$[28]="アア"SCRBART$[29]="テレレレレ" SCRBART$[30]="ミカン"SCRBART$[31]="セフ" SCRBAR$="ナ-カ゛カ゛カ゛スコ゛クナカ゛イシコシユフヤヤヤテコホヤロ ヒネホ" DIM SCRBAR$[24] FOR I=0TO 23 FOR J=0TO LEN(SCRBAR$)-1 ' SCRBAR$[I]=SCRBAR$[I]+CHR$(RND(62)+161) SCRBAR$[I]=SCRBAR$[I]+SCRBART$[RND(K)]'CHR$(RND(62)+161) J=LEN(SCRBAR$[I]) NEXT NEXT RETURN @WIN_SCRBAR WINBX=62-8 WINBY=0 WINBY2=52-8 WINBM=(24-5)*8 WINBX2=SCRBAR_X2 GOSUB @WINSCRBARY SCRBAR_X2=WINBX2 WINBX=0 WINBX2=62-8 WINBY=52-8 WINBM=LEN(SCRBAR$)*8-56 WINBY2=SCRBAR_Y2 GOSUB @WINSCRBARX SCRBAR_Y2=WINBY2 FOR I=0TO 4 WINSX=0 WINSY=I*8 WINSC=1 WINSTR$=MID$(SCRBAR$[I+SCRBAR_X2/8],WINBY2/8,7) GOSUB @WINSTRPUT NEXT RETURN @COM_HTN COMKF=0 COMP$="AHO"GOSUB COMPRT$ RETURN @S_TSKF WINY2=96 WINX2=64+16 RETURN @WIN_TSKF IF RND(1000)THEN GOSUB@TSKMAX WTSKFTI=TSKM FOR I=WINTSKFYY TO WTSKFTI-1 WINSX=0WINSY=(I-(WINTSKFYY))*8WINSC=1 WINSTR$=MID$(WINNAME$[I]+" "+STR$(TSKF[I]),WINTSKFXX,8) GOSUB @WINSTRPUT NEXT WINBX=64-10+16 WINBY=0 WINBY2=86-10 WINBX2=WINTSKFY WINBM=TSKMAX*8 GOSUB @WINSCRBARY WINTSKFY=WINBX2 WINTSKFYY=0OR WINBX2/8 WINBX=0 WINBX2=64-10+16 WINBY=84-8 WINBM=15*8 WINBY2=WINTSKFX GOSUB @WINSCRBARX WINTSKFX=WINBY2 WINTSKFXX=0OR WINTSKFX/8 RETURN @S_BG WINY2=43 WINTTL$="BG" RETURN @WIN_BG GFILL WFX,WFY,WFX2,WFY2,WIN_BG_CL WINN=WIN_BG_CL WINNX=0 WINNY=0 WINNY2=32 WINNX2=32 WINNM=255 ' WINNSP=0.5 GOSUB @WINNUMUPDWN WIN_BG_CL=WINN WINBX=33 WINBY=0 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF THEN OTWBGCL=WINN RETURN @S_HELP WINCLS=1 WINTTL$="HELP" WINX2=90 WINY2=86 RETURN @WIN_HELP ON HELP_M GOTO @WIN_HELP1,@WIN_HELP2,@WIN_HELP3 @WIN_HELP1 WINLBLX=0 WINLBLY=0 WINLBL$="アフ゜リノキト゛ウ" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=1 GOSUB@DIC_HELP1 WINLBLX=0 WINLBLY=8 WINLBL$="システムエラ-" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=2 GOSUB@DIC_HELP2 RETURN @WIN_HELP3 WINBX2=WIN_HELP_X WINBM=8WINBX2=WIN_HELP_X2 GOSUB @SCR_HELP WIN_HELP_X2=WINBX2 WINBM=68 WINBY2=WIN_HELP_Y2 GOSUB@SCR_HELPX WIN_HELP_Y2=WINBY2 WINLBLX=0 WINLBLY=0 WINLBL$="TOP" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=0 FOR I=0TO 6 WINSX=0 WINSY=I*8+8 WINSC=1 WINSTR$=MID$(HELP_DIC$[I+WIN_HELP_X2/4],WINBY2/4,10) GOSUB@WINSTRPUT NEXT RETURN @WIN_HELP2 WINLBLX=0 WINLBLY=0 WINLBL$="TOP" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=0 WINBY2=WIN_HELP_Y2 WINBM=60 GOSUB @SCR_HELPX WIN_HELP_Y2=WINBY2 FOR I=0TO 3 WINSX=0 WINSY=I*8+8 WINSC=1 WINSTR$=MID$(HELP_DIC$[I],WINBY2/4,12) GOSUB@WINSTRPUT NEXT RETURN @DIC_HELP1 HELP_DIC$[0]="RUNノテキストホ゛ックスニアフ゜リメイヲ HELP_DIC$[1]="ニュウリョクシテ[RUN]ヲクリックスレハ゛ HELP_DIC$[2]="キト゛ウシマス。 HELP_DIC$[3]="*ソンサ゛イシナイハ゛アイハエラ-カ゛テ゛マス。 RETURN @DIC_HELP2 HELP_DIC$[0]="SYSTEMERROR HELP_DIC$[1]="Out of buffer HELP_DIC$[2]="ハ゛ッファフ゛ソクテ゛ス。 HELP_DIC$[3]="" HELP_DIC$[4]="ハ゛ッファハサイタ゛イ2ツマテ゛テ゛ HELP_DIC$[5]="アフ゜リカ゛イシ゛ョウシュウリョウシタトキニモテ゛ル HELP_DIC$[6]="ハ゛アイモアリマス。 HELP_DIC$[7]="" HELP_DIC$[8]="ナオラナイハ゛アイハサイキト゛ウシテクタ゛サイ。 RETURN @SCR_HELPX WINBX=0 WINBX2=WINX2-WINDEGX2-WINDEGX WINBY=WINY2-WINDEGY-WINDEGY2-8 GOSUB @WINSCRBARX RETURN @SCR_HELP WINBX=WINX2-WINDEGX2-WINDEGX-8 WINBY=WINY'+WINDEGY WINBY2=WINY2-WINDEGY-WINDEGY2-8 GOSUB @WINSCRBARY RETURN @C_HELP WIN_HELP_Y2=0 WIN_HELP_X2=0 GOSUB@WINCLOSE RETURN 'MEMO ケンサクシテオキカエメント゛ウ ии VS ウ゛ワ゛ワ゛ワ゛ワ゛ゥ-ン ャヘ゛ンテ゛-フ゛ ホ゛ッカ゛カ゛キ゛ 'ййййййййййййййй йййййййййййййН---*---М= 'з з з к タケヤフ゛ 'зNOMAL- NORMAL з зキト゛ウシテイルタスクノカス゛ л??????? 'зDEGIN$- DESIGN$ з @TSKMAXТТТТТТ Сж СССУ 'з з зТТТТТТТТТТТТТТк лЁ ラフ゛レタ-カ゛ ヤフ゛ テ゛ ヤフ゛レタ- 'зシテキ hatema з зТТカンリョТТТТТТТТл и )ССУ _ ? 'з カンリョ- з зТТТТТТТТТТТТТТ л !!ССй _/ж ж '┥ййййййййййййййз ┥йййййййййййййййк жжжж жж @EOF лワハハハハハハ/ '[EOF] Е Е Е Е Е ─┬─│ │┌─ END ┌─┐С ┌ │ ├─┤├─ │ │С ├ILE │ │ │└─ └─┘ йййййй з и кサ-ト゛ハ゜-ティ-ノアフ゜リテ゛ス и ┬ ┬ зл | | з з ─ и ノッタ ヨッタ ウィ- ヨット テ゛ フナヨイ и з HATENAHATENA з и HATENAHATENA |_й__йй| HATENAHATENA '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зMOUSE SCALE for OTYAX и 'з и 'з MSS by hatenaи '┰ййййййййййййййййййййййййй┝ @S_MSS WINCLS=1 WIN_MODE=1 WINX2=177 WINY2=32 SPREAD(0),MSS_X,MSS_Y,MSS_A,MSS_S,MSS_C MSS_S=FLOOR(MSS_S) WINTTL$="Mouse Scale - "+STR$(MSS_S)+"%" RETURN @WIN_MSS WIN_MODE=1 MSS_S=FLOOR(MSS_S) WINTTL$="Mouse Scale - "+STR$(MSS_S)+"%" WINTTL$[TSK]=WINTTL$ GOSUB@WINDOW IF WINIDFLG THEN RETURN WINSX=32 WINSY=1 WINSC=1 WINSTR$="マウスノオオキサヲカエマス。" GOSUB@WINSTRPUT WINBX=0 WINBY=10 WINBSTR$="60%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=60 SPSCALE 0,MSS_S,0 NEXT WINBX=29 WINBY=10 WINBSTR$="SMALL" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=MSS_S-20 MSS_S=FLOOR(MSS_S) IF MSS_S 60 THEN MSS_S=60 SPSCALE 0,MSS_S,0 NEXT WINBX=74 WINBY=10 WINBSTR$="100%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=100 SPSCALE 0,MSS_S,0 NEXT WINBX=111 WINBY=10 WINBSTR$="BIG" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=MSS_S+20 MSS_S=FLOOR(MSS_S) IF MSS_S 200 THEN MSS_S=200 SPSCALE 0,MSS_S,0 NEXT WINBX=140 WINBY=10 WINBSTR$="200%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=200 SPSCALE 0,MSS_S,0 NEXT RETURN @C_MSS GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зネス゛ミクシ゛ョケ゛-ム и 'з и 'з NZM by hatenaи '┰ййййййййййййййййййййййййй┝ @S_NZM WINCLS=1 WINMODE=0 WINX2=48 WINY2=58 WINTTL$="ネス゛ミ" BF=0 GOSUB @WINBUFF IF BF==0 THEN GOSUB@SYS_ERR_BUFF RETURN NZM_BF=BF BFC=0 GOSUB@WINBUFFGCLS RETURN @WIN_NZM WINBX=9 WINBY=36 WINBSTR$="BOM" GOSUB@WINBTN NZM_F=!!WINBTNF GCOPY NZM_BF,0,0,46,36,WFX,WFY,1 BF=NZM_BF GOSUB @WINBUFFP GPSET RND(47),RND(36),13 IF NZM_F THEN GFILL 0,0,46,36,0 GOSUB @WINBUFFP2 RETURN @C_NZM BF=NZM_BF GOSUB@WINBUFFC GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зWindowMoveMode и 'з и 'з WMM by hatenaи '┰ййййййййййййййййййййййййй┝ @S_WMM WINCLS=1 WINMODE=0 WINX2=100 WINY2=68 WINTTL$="WindowMM" RETURN @WIN_WMM WINSX=2 WINSY=3 WINSC=1 WINSTR$=" イト゛ウモ-ト゛ " GOSUB@WINSTRPUT WINSX=82 WINSY=3 WINSC=11 WINSTR$=STR$(WINMOVMODE) GOSUB@WINSTRPUT WINSX=14 WINSY=22 WINSC=1 WINSTR$="スヘ゛テイト゛ウ" GOSUB@WINSTRPUT WINSX=14 WINSY=34 WINSC=1 WINSTR$="クロワクノミイト゛ウ" GOSUB@WINSTRPUT WINSX=14 WINSY=46 WINSC=13 WINSTR$="キモクイト゛ウ" GOSUB@WINSTRPUT WINBX=2 WINBY=20 WINBSTR$="0" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=0 WINBX=2 WINBY=32 WINBSTR$="1" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=1 WINBX=2 WINBY=44 WINBSTR$="2" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=2 RETURN @C_WMM GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зTask Manager и 'з и 'з TMNG by hatenaи '┰ййййййййййййййййййййййййй┝ @S_TMNG WINCLS=0 WIN_MODE=0 WINX2=191 WINTTL$="Taskmgr" TMNG_SC=0 TMNG_BXC=1 RETURN @WIN_TMNG TMNG_T=0 TMNG_SL=64 TMNG_L=7 FOR TMNG_I=0 TO TSKMAX-1 TMNG_T=TMNG_T+!!(WINFLG[TMNG_I]!=0) NEXT FOR TMNG_CI=1 TO TMNG_BXC WINSX=2 WINSY=2 WINSC=1 WINSTR$="Target " GOSUB@WINSTRPUT WINSX=58 WINSY=2 WINSC=11 WINSTR$=STR$(TMNG_SC) GOSUB@WINSTRPUT WINSX=2 WINSY=11 WINSC=11 WINSTR$=WINTTL$[TMNG_SC] GOSUB@WINSTRPUT WINSX=2 WINSY=20 WINSC=1 WINSTR$="Name " GOSUB@WINSTRPUT WINSX=42 WINSY=20 WINSC=11 WINSTR$=WINNAME$[TMNG_SC] GOSUB@WINSTRPUT WINBX=2 WINBY=28 WINBSTR$="Compact" GOSUB@WINBTN IF WINBTNF THEN TMNG_BXC=0 WINBX=2 WINBY=40 WINBSTR$="RUN.OTW" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="RUN" GOSUB@WINEXE WINBX=2 WINBY=52 WINBSTR$="Close" GOSUB@WINBTN IF WINBTNF THEN TSK=TMNG_SC GOSUB@WINCLOSEGT NEXT FOR TMNG_CI=1 TO !(TMNG_BXC) WINBX=2 WINBY=1 WINBSTR$="Resize" GOSUB@WINBTN IF WINBTNF THEN TMNG_BXC=1 TMNG_SL=13 NEXT FOR TMNG_I=0 TO TMNG_T-1 WINBX=2 WINBY=TMNG_I*12+TMNG_SL WINBSTR$=STR$(TMNG_I) GOSUB@WINBTN IF WINBTNF THEN TMNG_SC=TMNG_I WINSX=14 WINSY=TMNG_I*12+TMNG_SL+2 WINSC=1 IF LEN(STR$(TMNG_I))==2 THEN WINSX=WINSX+8 WINSTR$=WINTTL$[TMNG_I] IF LEN(WINTTL$[TMNG_I]) TMNG_L THEN TMNG_L=LEN(WINTTL$[TMNG_I]) GOSUB@WINSTRPUT NEXT WINY2=TMNG_SL+12+TMNG_T*12 WINX2=16+TMNG_L*8 RETURN @C_TMNG GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зBack Ground Music Player и 'з и 'з BGMP by hatena и '┰ййййййййййййййййййййййййй┝ @S_BGMP WIMCLS=1 WINMODE=0 WINX2=110 WINY2=33 WINTTL$="BGMPlayer" RETURN @WIN_BGMP IF BGMP_N 0 THEN BGMP_N=29 IF BGMP_N 29 THEN BGMP_N=0 WINSX=2 WINSY=2 WINSC=1 WINSTR$="BGM Number " GOSUB@WINSTRPUT WINSX=90 WINSY=2 WINSC=11 WINSTR$=STR$(BGMP_N) GOSUB@WINSTRPUT WINBX=2 WINBY=10 WINBSTR$="♪" GOSUB@WINBTN IF WINBTNF THEN BGMPLAY 7,BGMP_N WINBX=15 WINBY=10 WINBSTR$="м" GOSUB@WINBTN IF WINBTNF THEN BGMSTOP 7 WINBX=28 WINBY=10 WINBSTR$="+" GOSUB@WINBTN IF WINBTNF THEN BGMP_N=BGMP_N+1 WINBX=41 WINBY=10 WINBSTR$="-" GOSUB@WINBTN IF WINBTNF THEN BGMP_N=BGMP_N-1 RETURN @C_BGMP GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зControl Pannel и 'з и 'з CP by hatenaи '┰ййййййййййййййййййййййййй┝ @S_CP WINCLS=1 WINMODE=0 WINX2=191 WINY2=144 WINTTL$="コントロ-ルハ゜ネル" RETURN @WIN_CP WINBX=0 WINBY=8 WINBSTR$="マウスノオオキサ" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="MSS" GOSUB@WINEXE WINBX=69 WINBY=8 WINBSTR$="ウィント゛ウイト゛ウモ-ト゛" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="WMM" GOSUB@WINEXE RETURN @C_CP GOSUB@WINCLOSE RETURN
https://w.atwiki.jp/c21coterie/pages/658.html
再帰下降構文解析のスケルトン。 int saiki(std string formula,int p,int pr){ int re,a; while(formula.size() p){ char c=formula[p]; if(c== ( ){ p++; re=saiki(formula,p,0); p++; }else if(c== ) ){ return re; }else if(c== + || c== - ){ if(pr =1){ return re; } p++; a=saiki(formula,p,1); //ここに計算を書く }else if(c== * ){ if(pr =2){ return re; } p++; a=saiki(formula,p,2); //ここで計算を行う }else if(c== / ){ if(pr =2){ return re; } p++; a=saiki(formula,p,2); //ここで計算を行う }else{ //変数や自然数の読み込み } } return re; }
https://w.atwiki.jp/psparchives/pages/203.html
何気に良作。 軽い気持ちで始めてみたら、終わるタイミングを失うほどハマってしまうことがある。 アーケードモードとエクストラモード合わせて全200面。 セーブ機能もあるので、ゲームオーバーになっても安心。 ブロック崩しがやりたくなったらぜひどうぞ。 -- (名無しさん) 2008-10-26 20 44 44 ↑にもあるが全200面+エディットモードでボリュームはたっぷり。 エクストラモードでは何故か反射神経を測定しているらしく、GAMEOVERになるとそれが表示される。信憑性はあったものではないが。 ただ弾の速度が速く操作がおっつかないこともしばしば。 でもバーの移動速度は変えられますのでご安心。 でもやっぱり速い事には変わりないのでご乱心。 -- (名無しさん) 2009-01-18 23 50 02
https://w.atwiki.jp/sinapusu2002/pages/203.html
http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%2096 数独の盤面を解く問題。 入る可能性のある数字の少ないマスから優先して全探索するだけです。 #include stdio.h #include stdlib.h #include vector #include algorithm struct E{ int x,y; std vector char vec; bool operator (const E e)const{ if(vec.size()!=e.vec.size())return vec.size() e.vec.size(); return false; } }; FILE *fp; char map[9][10]; bool inOK(int x,int y,char n){ for(int i=0;i 9;i++){ if(map[y][i]==n)return false; if(map[i][x]==n)return false; } int x1=x/3*3; int y1=y/3*3; for(int i=0;i 3;i++){ for(int j=0;j 3;j++){ if(map[y1+i][x1+j]==n)return false; } } return true; } std vector E vec; int ans=0; bool isHit; bool search(int p){ if(vec.size()==p){ ans+=(map[0][0]- 0 )*100+(map[0][1]- 0 )*10+(map[0][2]- 0 ); return true; }else{ for(int i=0;i vec[p].vec.size();i++){ char c=vec[p].vec[i]; int x=vec[p].x; int y=vec[p].y; if(inOK(x,y,c)==true){ map[y][x]=c; if(search(p+1)==true){ return true; } map[y][x]= 0 ; } } } return false; } void calc(){ for(int i=0;i 9;i++){ fscanf(fp,"%s",map[i]); } bool bs[9][9][10]; memset(bs,0,sizeof(bs)); while(vec.empty()==false){ vec.pop_back(); } for(int y=0;y 9;y++){ for(int x=0;x 9;x++){ if(map[y][x]!= 0 )continue; E e1; e1.x=x; e1.y=y; for(char a= 1 ;a = 9 ;a++){ if(inOK(x,y,a)==true){ e1.vec.push_back(a); } } vec.push_back(e1); } } std sort(vec.begin(),vec.end()); search(0); } int main(){ if ((fp = fopen("sudoku.txt", "r")) == NULL) { fprintf(stderr, "%s\n", "error can t read file."); return EXIT_FAILURE; } char top[10],top2[10]; while(fscanf(fp,"%s %s",top,top2)!=EOF){ calc(); } fclose(fp); printf("%d\n",ans); }
https://w.atwiki.jp/hmiku/pages/46206.html
【登録タグ B GUMI KIRA VOCALOID Youtubeミリオン達成曲 曲】 作詞:KIRA 作曲:KIRA 編曲:KIRA 唄:GUMI English 曲紹介 「light me up and burn me DOWN DOWN DOWN!!」 クリスマスの日に出された、中毒性がある楽曲。 YouTubeではミリオンを達成。 ボカロ調教もKIRA氏が、動画はル季氏が、イラストはEkkoberry氏が、エンコードはcheesum氏が手掛ける。 歌詞 (配布zipより転載、一部編集) Boy, I feel The temperature rising My heart stops You struck me like lightning Can't fight This feeling inside me Time's up I got you in my sights It's just the way you do to me What you do to me (It's human nature) Tonight, it's only you and me Baby, set me free So, take me up Make me fall and Show me what Lies beyond and Light me up Light me up and Burn me down down down down We'll Keep it secret In the dark They won't see it Light me up Light me up and Burn me down down down down Let's Play a game I'll make the rules No explaining Light me up Light me up and Burn me down down down down Come Take me over Throw me down Pull me closer Light me up Light me up and Burn me down down down down So dangerous The way you got me I'm burning up inside I can't breathe Blackout There's nothing I can see But you (But you) It's just the way you do to me What you do to me (It's human nature) Tonight, it's only you and me Baby, set me free So, take me up Make me fall and Show me what Lies beyond and Light me up Light me up and Burn me down down down down We'll Keep it secret In the dark They won't see it Light me up Light me up and Burn me down down down down Let's Play a game I'll make the rules No explaining Light me up Light me up and Burn me down down down down Come Take me over Throw me down Pull me closer Light me up Light me up and Burn me down down down down 'Cause I can't stop thinking about you, baby My baby So let's just go all the way tonight Forget what's on your mind Except for Me So, take me up Make me fall and Show me what Lies beyond and Light me up Light me up and Burn me down down down down We'll Keep it secret In the dark They won't see it Light me up Light me up and Burn me down down down down Let's Play a game I'll make the rules No explaining Light me up Light me up and Burn me down down down down Come Take me over Throw me down Pull me closer Light me up Light me up and Burn me down down down down down. コメント 名前 コメント