import{e as w,c as a,a as t,b as n,d as r,n as M,f as p,t as i,g as S,F as h,r as v,i as k,E as D,o as c,m as O,H as x,h as C,G as b,_ as H}from"./DpdQcRr7.js";import"./BcpEzrWT.js";const I={class:"uc-page"},J={class:"uc-container"},j={class:"uc-hero"},N={class:"uc-hero-main"},P={class:"uc-badge"},V={class:"uc-progress"},B={class:"uc-progress-bar"},$={class:"uc-progress-text"},q={class:"uc-block"},z={class:"uc-obj-list"},E={class:"uc-block"},F={class:"uc-lessons"},U=["onClick"],G={class:"uc-lesson-num"},L={class:"uc-lesson-icon"},R={class:"uc-lesson-texts"},T={class:"uc-lesson-title"},A={class:"uc-lesson-summary"},K={class:"uc-lesson-meta"},Q={class:"uc-level"},W={class:"uc-time"},X={key:0,class:"uc-lesson-body"},Y={class:"uc-lesson-desc"},Z={class:"uc-code uc-code--inline"},tt={class:"uc-lesson-start"},st=w({__name:"index",setup(et){const g=["変数・型・メソッドといったJavaの基本文法","条件分岐やループでMODの動きを組み立てる考え方","クラスとオブジェクトでMODを設計する感覚","Minecraftの仕組みを継承して拡張する第一歩"],u=[{id:1,icon:"mdi:help-circle-outline",title:"Javaってなに？",summary:"MODを動かしている「言語」を知ろう",minutes:10,level:1,status:"done",body:"MinecraftのMODはJavaというプログラミング言語で書かれています。まずは「プログラム＝コンピュータへの指示書」だとイメージしましょう。下のコードはJavaのおまじないとメッセージをMinecraftのログに出す例です。",code:`public class HelloMod {
    public static void main(String[] args) {
        // ログに文字を出す
        System.out.println("Hello, Minecraft!");
    }
}`},{id:2,icon:"mdi:variable",title:"変数と型",summary:"数や文字をコンピュータに覚えさせる",minutes:15,level:1,status:"current",body:"変数は「値を入れておく箱」です。Javaでは箱に入れるものの種類（型）を最初に決めます。int は整数、String は文字、boolean は true / false を表します。",code:`int level = 3;          // 整数
String name = "ダイヤ剣";  // 文字
boolean isRare = true;   // true / false

System.out.println(name + " はレベル " + level);`},{id:3,icon:"mdi:function-variant",title:"メソッド",summary:"よく使う処理をまとめて名前をつける",minutes:15,level:1,status:"todo",body:"メソッドは「処理のまとまり」に名前をつけたものです。一度作れば何度でも呼び出せます。( ) の中に材料（引数）を渡し、結果を return で返します。",code:`// 攻撃力を計算するメソッド
int attackPower(int base, int bonus) {
    return base + bonus;
}

// 呼び出す
int power = attackPower(5, 2); // → 7`},{id:4,icon:"mdi:call-split",title:"条件分岐（if）",summary:"状況に応じて動きを変える",minutes:15,level:2,status:"todo",body:"if文を使うと「もし〜なら」という判断ができます。条件が true のときだけ中の処理が実行され、そうでなければ else が実行されます。",code:`int hp = 4;

if (hp <= 5) {
    System.out.println("危険！回復しよう");
} else {
    System.out.println("まだ大丈夫");
}`},{id:5,icon:"mdi:repeat",title:"繰り返し（for / while）",summary:"同じ処理を何度も実行する",minutes:15,level:2,status:"todo",body:"ループを使うと、同じ処理を繰り返せます。for は「回数が決まっている」とき、while は「条件が続く限り」繰り返したいときに使います。",code:`// アイテムを5個ドロップする
for (int i = 0; i < 5; i++) {
    dropItem("diamond");
}`},{id:6,icon:"mdi:cube-outline",title:"クラスとオブジェクト",summary:"MODの「設計図」と「実体」",minutes:20,level:3,status:"todo",body:"クラスは「設計図」、オブジェクトはその設計図から作った「実体」です。たとえば「剣」というクラスから、名前や攻撃力の違う剣をいくつも作れます。",code:`class Sword {
    String name;
    int power;

    Sword(String name, int power) {
        this.name = name;
        this.power = power;
    }
}

Sword diamond = new Sword("ダイヤ剣", 7);`},{id:7,icon:"mdi:source-branch",title:"継承とオーバーライド",summary:"Minecraftの仕組みを受け継いで拡張する",minutes:20,level:3,status:"todo",body:"MOD開発では、Minecraftが用意したクラスを「継承」して、一部だけ自分の処理に「オーバーライド（上書き）」します。これがMODで新しいアイテムやブロックを作る基本形です。",code:`public class MagicSword extends SwordItem {
    @Override
    public void onUse(Player player) {
        // 使ったときの独自処理
        player.heal(4);
    }
}`},{id:8,icon:"mdi:rocket-launch-outline",title:"はじめてのMOD処理を書く",summary:"学んだ文法を組み合わせて動かす",minutes:25,level:3,status:"todo",body:"最後は、ここまでの文法を組み合わせて実際に動くMOD処理を書いてみましょう。変数・条件分岐・メソッドが自然に登場します。",code:`public void onItemUse(Player player) {
    int hp = player.getHp();
    if (hp < 10) {
        player.heal(6);
        System.out.println("回復しました！");
    }
}`}],m=k(2),_=l=>{m.value=m.value===l?-1:l},y=b(()=>u.filter(l=>l.status==="done").length),f=b(()=>Math.round(y.value/u.length*100));return(l,s)=>{const o=D("Icon");return c(),a("div",I,[t("div",J,[t("section",j,[t("div",N,[t("span",P,[n(o,{icon:"mdi:code-braces",width:14,height:14}),s[1]||(s[1]=r(" Java 入門 ",-1))]),s[3]||(s[3]=t("h1",{class:"uc-title"},"プログラミング入門",-1)),s[4]||(s[4]=t("p",{class:"uc-lead"}," MODを動かしている言語「Java」の基礎を、Minecraftの題材でやさしく学びます。 変数からクラスまで、順番に進めれば自分でMODの動きが書けるようになります。 ",-1)),t("div",V,[t("div",B,[t("div",{class:"uc-progress-fill",style:M({width:p(f)+"%"})},null,4)]),t("span",$,i(p(y))+" / "+i(u.length)+" 章クリア",1)]),t("button",{class:"uc-cta",onClick:s[0]||(s[0]=e=>_(2))},[n(o,{icon:"mdi:play",width:18,height:18}),s[2]||(s[2]=r(" つづきから学ぶ ",-1))])]),s[5]||(s[5]=S(`<div class="uc-hero-code" data-v-c0c6d51a><div class="uc-code-head" data-v-c0c6d51a><span class="dot dot-r" data-v-c0c6d51a></span><span class="dot dot-y" data-v-c0c6d51a></span><span class="dot dot-g" data-v-c0c6d51a></span><span class="uc-code-file" data-v-c0c6d51a>HelloMod.java</span></div><pre class="uc-code" data-v-c0c6d51a><code data-v-c0c6d51a>public class HelloMod {
    public static void main(String[] args) {
        System.out.println(
            &quot;Hello, Minecraft!&quot;
        );
    }
}</code></pre></div>`,1))]),t("section",q,[s[6]||(s[6]=t("h2",{class:"uc-h2"},"このユニットで身につくこと",-1)),t("ul",z,[(c(),a(h,null,v(g,(e,d)=>t("li",{key:d,class:"uc-obj"},[n(o,{icon:"mdi:check-circle",width:18,height:18,class:"uc-obj-icon"}),t("span",null,i(e),1)])),64))])]),t("section",E,[s[8]||(s[8]=t("h2",{class:"uc-h2"},"カリキュラム",-1)),t("div",F,[(c(),a(h,null,v(u,e=>t("div",{key:e.id,class:O(["uc-lesson",[`is-${e.status}`,{"is-open":p(m)===e.id}]])},[t("button",{class:"uc-lesson-head",onClick:d=>_(e.id)},[t("span",G,[e.status==="done"?(c(),x(o,{key:0,icon:"mdi:check",width:16,height:16})):(c(),a(h,{key:1},[r(i(e.id),1)],64))]),t("span",L,[n(o,{icon:e.icon,width:20,height:20},null,8,["icon"])]),t("span",R,[t("span",T,i(e.title),1),t("span",A,i(e.summary),1)]),t("span",K,[t("span",Q,[(c(),a(h,null,v(3,d=>n(o,{key:d,icon:d<=e.level?"mdi:circle":"mdi:circle-outline",width:8,height:8},null,8,["icon"])),64))]),t("span",W,[n(o,{icon:"mdi:clock-outline",width:13,height:13}),r(i(e.minutes)+"分",1)])]),n(o,{icon:"mdi:chevron-down",width:20,height:20,class:"uc-lesson-chevron"})],8,U),p(m)===e.id?(c(),a("div",X,[t("p",Y,i(e.body),1),t("pre",Z,[t("code",null,i(e.code),1)]),t("button",tt,[n(o,{icon:"mdi:play-circle-outline",width:16,height:16}),s[7]||(s[7]=r(" この章をはじめる ",-1))])])):C("",!0)],2)),64))])])])])}}}),nt=H(st,[["__scopeId","data-v-c0c6d51a"]]);export{nt as default};
