u`
eLXgҁFp.367iWFlbNƃRNVNXj
Q[JKFnCXRAAG@õ_A

p.367iWFlbNƃRNVNXj

EArrayListNX(p.177)̂悤ɁAf[^\񋟂NXRNVNXB
ERNVNX̒ɂ́AWFlbNNXȂ\Iȑ݂C
EList<T>NX́Ai[IuWFNǧ^^p[^Ŏw肵ėpB
EƁAzƓlɗpłāAz_ȃf[^\ƂȂ
EȂAArrayListNXł͊i[ɂ^񂪎Ă܂ALXgKvAList<T>NXł͕sKvɂȂAg₷B
EList<T>NXɂ́AArrayListNXƓlɁAi[pAdd\bhAvfԂCountvpeBA񂷂Sort\bhȂǂB
Epɂ́Ausing System.Collections.Generic; w肷ƕ֗

p.368 list01.cs

//p.368 list01.cs
using System;
using System.Collections.Generic; //List<T>p
class list01 {
    public static void Main() {
        bool bEnd = false; //ItOIt
        //WFlbNRNVNXList<T>̃IuWFNg𐶐
        List<int> mylist = new List<int>(); //^p[^Ő^w
        while (true) { //[v
            Console.Write("Data = ");
            string strData = Console.ReadLine();
            if (!Char.IsDigit(strData[0])) { //擪ł͂ȂH
                bEnd = true; //ItOI
            } else {
                mylist.Add(int.Parse(strData)); //ăXgɊi[
            }
            if (bEnd) { //ItOIH}
                break; //[v𔲂
            }

        }
        Console.WriteLine(); //s
        for (int i = 0; i < mylist.Count; i++) { //SvfɂČJԂ
            Console.WriteLine("[{0}] {1}", i, mylist[i]);
        }
        Console.WriteLine(); //s
        mylist.Sort(); //ɐ
        for (int i = 0; i < mylist.Count; i++) { //SvfɂČJԂ
            Console.WriteLine("[{0}] {1}", i, mylist[i]);
        }
    }
}

p.369 RNVNX̏

EWFlbNNXł邩ǂƂ͖֌WŁARNVNX̏ɂ̓RNVqp\
Eʏ̃NX̏ꍇ̏F NX Qƕϐ = new NX{l,c}
EWFlbNNX̏ꍇ̏F NX<^> Qƕϐ = new NX<^>{l,c}

p.369 list02.cs

//p.369 list02.cs
using System;
using System.Collections.Generic;
class list02 {
    public static void Main() {
        List<string> names = new List<string> { "Y", "Y", "OY" };
        foreach (string s in names) { //i[ĂSvfɂČJԂ
            Console.WriteLine(s);
        }
    }
}

AWKFp.369 list02.cs

EWFlbNNXł͂ȂArrayListNXɂĂ݂悤

쐬

//AWKFp.369 list02.cs
using System;
using System.Collections; //ArrayListp
class list02 {
    public static void Main() {
        ArrayList names = new ArrayList{ "Y", "Y", "OY" }; //RNVq
        foreach (var s in names) { //i[ĂSvfɂČJԂ
            Console.WriteLine(s);
        }
    }
}

p.370iIuWFNgqj

EeLXgɂ͐ĂȂAp.370 list03.cśAIuWFNgqŏIuWFNgRNVq̗vfƂĂB
EIuWFNgq́uf[^o = lv̏ɂAIuWFNg̏lݒłd|
EWFlbNNXł邩ǂƂ͖֌W
EF NX Qƕϐ = new NX{o = l; c};
EȂAIuWFNgqƂėpf[^o͊{IpublicłKvB
EApublicȃvpeBoRȂȂB

p.370 list03.cs

//p.370 list03.cs
using System;
using System.Collections.Generic;
class BOOK {
    public string title; //RNVqňf[^o
    public string author;
    public decimal price;
}
class list03 {
    public static void Main() {
        List<BOOK> mybook = new List<BOOK> { //Ŝ̓RNVq
            new BOOK {title = "䂪y͔Lł",
                      author = "Ėڟ",
                      price = 1050}, //ꂼꈵIuWFNgq
            new BOOK {title = "_̊Ki",
                      author = "nӏ~",
                      price = 1600}, //ꂼꂪIuWFNgq
            new BOOK {title = "",
                      author = "Ėڟ",
                      price = 1200}  //ꂼꂪIuWFNgq
        };
        Console.WriteLine("----ꗗ----");
        foreach (BOOK b in mybook) { //SvfɂČJԂ
            Console.WriteLine("{0}, {1}, {2}~", b.title, b.author, b.price);
        }
    }
}

AWKFp.370 list03.cs

ERBOOKIuWFNgA\߁AIuWFNgqŏĂ
ERNVqList<T>Ɋi[悤
E܂Af[^oSprivateɂÄׂ̂publicȃvpeBǉ悤
@iKȃ[d|ĂƗǂj

쐬

//AWKFp.370 list03.cs
using System;
using System.Collections.Generic;
class BOOK {
    string title; //RNVqňf[^o
    string author;
    decimal price;
    public string T { set { title = value; } get { return title; } } //vpeB
    public string A { set { author = value; } get { return author; } }
    public decimal P { set { if (value >= 0) price = value; } get { return price; } }
}
class list03 {
    public static void Main() {
        BOOK x = new BOOK {T = "䂪y͔Lł", A = "Ėڟ", P = 1050}; //IuWFNgq
        BOOK y = new BOOK {T = "_̊Ki", A = "nӏ~", P = 1600}; //IuWFNgq
        BOOK z = new BOOK {T = "", A = "Ėڟ", P = 1200}; //IuWFNgq
        List<BOOK> mybook = new List<BOOK> { x, y, z }; //Ŝ̓RNVq
        Console.WriteLine("----ꗗ----");
        foreach (var b in mybook) { //SvfɂČJԂ
            Console.WriteLine("{0}, {1}, {2}~", b.T, b.A, b.P); //vpeBoR
        }
    }
}

p.371 WFlbNNXƌp

EWFlbNNX̌pɂ́A^p[^̎w@ɔ
EWFlbNNX̌^p[^ɋ̓IȌ^w肵ԂŌp̊{NXɂł
EF class hNX : {WFlbNNX<^> {c}
EN[Y\z^ƂAhNX͒ʏNXłWFlbNNXłǂ
EWFlbNNX̌^p[^^p[^̂܂܂̏ԂŌp̊{NXɂł
EF class hNX<^p[^> : {WFlbNNX<^p[^> {c}
EI[v\z^ƂAhNX̓WFlbNNXłȂ΂ȂȂ
EI[v\z^ł͌^p[^̊{NẌps

p.371 generic03.cs

//p.371 generic03.cs
using System;
class MyClass<T> { //WFlbN{NX
    public T x;
}
class MyClass2 : MyClass<int> { //N[Y\z^p
    //Ɂupublic T x;v^āupublic int x;vƂ݂Ȃ
    public void show() {
        Console.WriteLine(x);
    }
}
class generic03 {
    public static void Main() {
        MyClass2 mc = new MyClass2(); //^p[^͕sv
        mc.x = 10; //N[Y\z^pɂint^ɂȂĂ
        mc.show();
    }
}

AWKFp.371 generic03.cs

EN[Y\z^ł́AhNXWFlbNNXŗǂƂmF悤
EMyClass2NXAMyClass2<T>WFlbNNXɂāAT^̃f[^oyǉ
Eshow\bhy\悤ɂ悤
EȂAMyClass<T>̌^p[^T͖֌WɂȂ邱ƂmF悤

쐬

//AWKFp.371 generic03.cs
using System;
class MyClass<T> { //WFlbN{NX
    public T x;
}
class MyClass2<T> : MyClass<int> { //yύXzN[Y\z^pWFlbNNX
    //Ɂupublic T x;v^āupublic int x;vƂ݂Ȃ
    public T y; //yǉz
    public void show() {
        Console.WriteLine("x = {0}, y = {1}", x, y); //yύXz
    }
}
class generic03 {
    public static void Main() {
        MyClass2<string> mc = new MyClass2<string>(); //yύXz^p[^͕sv
        mc.x = 10; //N[Y\z^pɂint^ɂȂĂ
        mc.y = "Shar"; //yǉz
        mc.show();
    }
}

p.372iI[v\z^j

Euclass hNX<^p[^> : {WFlbNNX<^p[^>vƂ邱ƂŁA^p[^p

p.372 generic04.cs

//p.372 generic04.cs
using System;
class MyClass<T> { //WFlbN{NX
    public T x;
}
class MyClass2<T> : MyClass<T> { //I[v\z^pWFlbNNX
    //Ɂupublic T x;vƂ݂Ȃ
    public void show() {
        Console.WriteLine(x);
    }
}
class generic04 {
    public static void Main() {
        MyClass2<int> mc = new MyClass2<int>(); //^p[^Kv
        mc.x = 2; //N[Y\z^pɂint^ɂȂĂ
        mc.show();
        MyClass2<string> mc2 = new MyClass2<string>(); //^p[^Kv
        mc2.x = "test"; //N[Y\z^pɂstring^ɂȂĂ
        mc2.show();
    }
}

p.373ǐ^p[^WFlbNNX̌pj

Ě^p[^ɂāAׂĂɋ̓IȌ^w肷΃N[Y\z^ɂȂ
EPł^p[^̂܂܂ɂ΁AI[v\z^ɂȂ
E̎Aꕔ̌^p[^ɂċ̓IȌ^w肷邱Ƃł

쐬

//p.373 generic05.cs
using System;
class MyClass<T, U> { //̌^p[^WFlbN{NX
    public T x;
    public U y;
}
class MyClass2<T> : MyClass<T, int> { //LĂȂ^͖FI[v\z^
    //Ɂupublic T x;vƂ݂Ȃ
    //Ɂupublic U y;vAupublic int y;vƂ݂Ȃ
    public void show() {
        Console.WriteLine("x = {0}, y = {1}", x, y);
    }
}
class generic05 {
    public static void Main() {
        MyClass2<string> mc = new MyClass2<string>(); //^̎w肪Kv
        mc.x = "cat"; //string^ɂ
        mc.y = 20; //pint^ɂ
        mc.show();
    }
}

eLXgҎ\Fp.374u^p[^̐v

Q[JKFnCXRAAG@õ_A

K35 XRAAbviČfځ{j

EG@Ɏe+10_Ƃ悤
EXRA̓Q[I[o[ʂEnterL[ꂽ[ɂ悤
EnCXRAێĂAGAME OVERʂŃnCXRA𒴂uHiSCORE Update !vƕ\悤
EnCXRAȉȂuHiSCORE is 000,000(nCXRA𖄂ߍ)vƕ\悤

菇Edl

@ CX^XϐFnCXRApintϐhiscoreƃnCXRA\p̕ϐhiscoremsgǉ
A FXRA̕ϐscore0ɏ鏈ǉ
B `揈FQ[I[o[ʂȂ΁Ahiscoremsg25|Cg(150,200)ɕ`悷鏈ǉ
C ^C}[CxgFQ[I[o[ɁAnCXRAXVĂAXRAnCXRAɑAhiscoremsgɁuHiSCORE Update !v
D ^C}[CxgFQ[I[o[ɁAnCXRAXVĂȂAuHiSCORE is 000,000vɃnCXRA𖄂ߍhiscoremsgɑ
E ^C}[CxgFeƓG@Փ˂ĂAXRA10_Z

쐬

//K35 XRAAbv
using System; //ėpIɗp
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //SizeAImagep
struct Item { //ACe\\
    public Image i; //摜
    public int x;  //SXW
    public int y;  //SYW
    public int hv; //Ȇx(͕̐AE͐̐)
    public int vv; //㉺̑x(͕̐A͐̐)
    public int v;  //\(0F\A1ȏF\)
}
class Program : Form { //FormNX̔hNX
    [System.Runtime.InteropServices.DllImport("user32.dll")] //DLLC|[g
    private static extern short GetKeyState(int nVirtKey); //O`w
    int gamemode = 0; //[h(0:^Cg,1:vC,9:I)
    int score = 0; //XRA
    int hiscore = 0; //yǉznCXRA
    Image backi = Image.FromFile("backb.bmp"); //wi摜Ǎ
    Image playeri = Image.FromFile("player.gif"); //@ʏ摜Ǎ
    Image playerl = Image.FromFile("playerl.gif"); //@摜Ǎ
    Image playerr = Image.FromFile("playerr.gif"); //@E摜Ǎ
    Image bulleti = Image.FromFile("bullet.gif"); //e摜Ǎ
    Image bullet2i = Image.FromFile("bullet2.gif"); //e摜2Ǎ
    Image enemyi = Image.FromFile("enemy.gif"); //G@摜Ǎ
    Pen pen1 = new Pen(Color.Red, 2); //ԐF2̃y
    Brush brush1 = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //ԂuV
    Font font1 = new Font("CI", 20, FontStyle.Bold); //tHg𐶐
    Font fontt = new Font("CI", 80, FontStyle.Bold); //tHg𐶐
    Font fontm = new Font("CI", 25, FontStyle.Bold); //tHg𐶐
    Brush brushs = new SolidBrush(Color.Yellow); //F̃uV
    Timer timer = new Timer(); //^C}[̐
    int backy = 0; //1ڂ̔wi`JnYW
    Item player; //@̍\̃IuWFNg
    const int maxpb = 10; //e̍ő吔
    Item[] pba = new Item[maxpb]; //e̍\̃IuWFNgz
    const int cold = 10; //e˂̗p
    int waitpb = 0; //e˂̑҂
    const int maxenemy = 20; //G@̍ő吔
    Item[] enemya = new Item[maxenemy]; //G@̍\̃IuWFNgz
    int waitenemy = 0; //G@̏o҂
    int enemyint = 50; //G@̏oԊu
    string hiscoremsg = "";  //yǉznCXRAbZ[W
    //ef[^Q[Jn̒lɂ
    void initData() {
        player.i = playeri;  //@̉摜
        player.x = 320; //@̒SXW
        player.y = 410; //@̒SYW
        player.hv = 0;  //@̍Ȇx
        player.v = 1;  //@\
        waitpb = 0; //e˂̑҂
        waitpb = 0; //e˂̑҂
        score = 0; //yǉzXRANA
    }
    //Wp摜`揈
    private void DrawItem(PaintEventArgs e, Item it) {
        int xx = it.x - it.i.Width / 2; //XW𓾂
        int yy = it.y - it.i.Height / 2; //YW𓾂
        e.Graphics.DrawImage(it.i, xx, yy);
    }
    //ȉ~`̏Փ˔(ACeaƃACebՓ˂Ă邩ǂԂ)
    private bool isHit(Item a, Item b) {
        int dest = (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); //Q
        double ra = (a.i.Width < a.i.Height) ? a.i.Width / 2.0 : a.i.Height / 2.0; //aa
        double rb = (b.i.Width < b.i.Height) ? b.i.Width / 2.0 : b.i.Height / 2.0; //ab
        return dest < (ra + rb) * (ra + rb); //QƓa̘âQr
    }
    //`揈̃I[oCh
    protected override void OnPaint(PaintEventArgs e) {
        base.OnPaint(e); //{NX̕`揈Ă
        e.Graphics.DrawImage(backi, 0, backy); //wi摜`
        e.Graphics.DrawImage(backi, 0, backy - backi.Height); //wi摜`
        if (gamemode == 0) { //X^[gʁH
            e.Graphics.DrawString("GAME1", fontt, brushs, 100, 150); //^Cg\
            e.Graphics.DrawString("Hit Enter Key", fontm, brushs, 200, 300); //bZ[W\
        } else { //vCʂQ[I[o[ʁH
            string s = String.Format("SCORE:{0:000,000}", score); //XRA
            e.Graphics.DrawString(s, font1, brushs, 400, 10); //XRA\
            if (player.v != 0) { //@\H
                switch (player.hv) { //@̌ɂĕ
                    case 0: player.i = playeri; break; //ʏ摜ɂ
                    case -1: player.i = playerl; break; //摜ɂ
                    case 1: player.i = playerr; break; //E摜ɂ
                }
                DrawItem(e, player); //@`
            }
            foreach (var pb in pba) { //SeɂČJԂ
                if (pb.v == 1) { //eH
                    DrawItem(e, pb); //e`
                }
            }
            foreach (var enemy in enemya) { //SG@ɂČJԂ
                if (enemy.v == 1) { //G@H
                    DrawItem(e, enemy); //G@`
                }
            }
        }
        if (gamemode == 9) { //Q[I[o[ʁH
            e.Graphics.DrawString("GAME OVER", fontm, brushs, 210, 150); //bZ[W\
            e.Graphics.DrawString(hiscoremsg, fontm, brushs, 150, 200); //yǉznCXRAbZ[W\
            e.Graphics.DrawString("Hit Enter Key", fontm, brushs, 200, 300); //bZ[W\
        }
    }
    //L[͎
    void OnKeyDown(object o, KeyEventArgs e) { 
        if (e.KeyCode.ToString() == "Escape") { //EscL[Ă
            Close(); //tH[I
        }
        //^CgʂEnterL[Ă
        if (gamemode == 0 && e.KeyCode.ToString() == "Return") {
            initData(); //ef[^Q[Jn̒lɂ
            gamemode = 1; //vCɑJ
            timer.Start(); //^C}[Jn                  
        }
        //Q[I[o[ʂEnterL[Ă
        else if (gamemode == 9 && e.KeyCode.ToString() == "Return") {
            initData(); //ef[^Q[Jn̒lɂ
            for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
                enemya[i].v = 0; //ɂ
            }
            for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
                pba[i].v = 0; //ɂ
            }
            gamemode = 1; //vCɑJ
        }
        Invalidate(); //ʍĕ`˗
    }
    //^C}[Cxg
    void Play(object o, EventArgs e) { 
        backy = (backy + 1) % backi.Height; //1ڂ̔wi`JnYW
        if (gamemode == 1) { //vCʁH
            player.hv = 0; //@̌𖳂ɂĂ
            if (player.x > playeri.Width / 2 && GetKeyState((int)Keys.Left) < 0) { //͈͓ŁL[ĂH
                player.x -= 10; //@
                player.hv = -1; //
            }
            if (player.x < backi.Width - playeri.Width / 2 && GetKeyState((int)Keys.Right) < 0) { //͈͓ŁL[ĂH
                player.x += 10; //@E
                player.hv = 1; //E
            }
        }
        for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
            if (enemya[i].v != 0) { //G@݁H
                if (player.v != 0 && isHit(enemya[i], player)) { //@݂ՓˁH 
                    player.v = 0; //@
                    gamemode = 9; //Q[I[o[ɂ
                    if (score > hiscore) { //yȉǉznCXRAXVH
                        hiscore = score; //nCXRAXV
                        hiscoremsg = "HiSCORE Update !"; //bZ[W
                    } else {
                        hiscoremsg = String.Format("HiSCORE is {0:000,000}", hiscore); //XRA
                    }
                    break; //
                }
                for (int j = 0; j < maxpb; j++) { //SeɂČJԂ
                    if (pba[j].v != 0 && isHit(enemya[i], pba[j])) { //e݂ՓˁH
                        enemya[i].v = 0; //̓G@
                        pba[j].v = 0;  //̎e
                        score += 10; //yǉzXRAAbv
                        break; //̓G@֐i
                    }
                }
            }
        }
        if (gamemode == 1) { //vCʁH
            if (GetKeyState((int)Keys.Space) < 0) { //Xy[XL[ĂH
                if (waitpb <= 0) { //eˑ҂Ԃ[H
                    for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
                        if (pba[i].v == 0) { //e\H
                            pba[i].v = 1; //\ɂ
                            pba[i].i = bulleti; //摜
                            pba[i].x = player.x; //XW͎@Ɠ
                            pba[i].y = player.y - player.i.Height / 2 - pba[i].i.Height / 2; //YW͎@̒
                            pba[i].vv = -5; //ړx
                            waitpb = cold; //eˑ҂ԂZbg
                            break; //1˂łOK
                        }
                    }
                }
            } else { //Xy[XL[ĂȂH
                waitpb = 0; //eˑ҂Ԃ[ɂĔˉ\ɂ
            }
        }
        if (waitenemy <= 0) { //G@o҂Ԃ[H
            for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
                if (enemya[i].v == 0) { //G@\H
                    enemya[i].v = 1; //\ɂ
                    enemya[i].i = enemyi; //摜
                    enemya[i].x = player.x; //XW͎@Ɠ
                    enemya[i].y = -enemyi.Height; //YW͏[̒
                    enemya[i].vv = 5; //ړx
                    waitenemy = enemyint; //eˑ҂ԂZbg
                    break; //1@ołOK
                }
            }
        }
        for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
            if (pba[i].v != 0) { //e݁H
                pba[i].i = (pba[i].i == bulleti) ? bullet2i : bulleti; //摜ݕύX
                pba[i].y += pba[i].vv; //ֈړ
                if (pba[i].y + pba[i].i.Height / 2 < 0) { //ʏ[ɏo
                    pba[i].v = 0; //e
                }
            }
        }
        for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
            if (enemya[i].v != 0) { //G@݁H
                enemya[i].y += enemya[i].vv; //ֈړ
                if (enemya[i].y - enemya[i].i.Height / 2 > backi.Height) { //ʉ[艺ɏo
                    enemya[i].v = 0; //G@
                }
            }
        }
        if (waitpb > 0) { //eˑ҂ԂZbgĂ
            waitpb--; //JEg_E
        }
        if (waitenemy > 0) { //G@o҂ԂZbgĂ
            waitenemy--; //JEg_E
        }
        Invalidate(); //ʍĕ`˗
    }
    //RXgN^
    Program() { 
        DoubleBuffered = true; //_uobt@OL
        KeyDown += new KeyEventHandler(OnKeyDown); //L[̓Cxgo^
        timer.Tick += new EventHandler(Play); //^C}[Cxgo^
        timer.Interval = 10; //^C}[C^[o(~b)
    }
    public static void Main() {
        Program f = new Program(); //̃IuWFNg𐶐
        f.Size = new Size(660, 520); //tH[̃TCYݒ
        f.Text = "Game"; //tH[ݒ
        f.ControlBox = false; //Rg[{bNX\
        f.FormBorderStyle = FormBorderStyle.Fixed3D; //TCYύX}~
        Application.Run(f); //tH[o
    }
}

e[}31 

ERandomNX͗񋟂̂ŁASystemOԂɂ̂Łuusing System;v΃NXŗp\
ERandomNX̃ftHgRXgN^ĂяoƁAIɃVXeNbNpV[h(n̏ݒ)sāA
@@\񋟂IuWFNg
@ C/C++񋟂^ƓAÕV[h͕svȂ̂ŕ֗
ERandomNX̃CX^X\bhuint Next(int)v0l-1܂ł̂ǂꂩ̐Ԃ
F
@Random rnd = new Random(); //pRandomNX̃CX^X𐶐
@int hp = 10 + rnd.Next(10); //10`19̊Ԃ̃_Ȑ𓾂HP̏lƂ
EIuWFNg͎g܂킵\Ȃ̂ŁANX̃f[^oƂĒ`EĂƗǂ

K36 G@̏oʒu_

EG@̏oXW@Œ肩烉_ɕύX悤
E[E[܂ł̂ǂoƂ

菇Edl

@ ProgramNX̃f[^oƂRandomNX̃CX^X𐶐
A ^C}[CxgFG@o҂Ԃ[ȂΓG@oƂŁAXW̒lL̎Ō߂悤ɕύX
@XW = G@̕2{(0wi̕-G@̕܂)

쐬

//K36 G@̏oʒu_
using System; //ėpIɗp
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //SizeAImagep
struct Item { //ACe\\
    public Image i; //摜
    public int x;  //SXW
    public int y;  //SYW
    public int hv; //Ȇx(͕̐AE͐̐)
    public int vv; //㉺̑x(͕̐A͐̐)
    public int v;  //\(0F\A1ȏF\)
}
class Program : Form { //FormNX̔hNX
    [System.Runtime.InteropServices.DllImport("user32.dll")] //DLLC|[g
    private static extern short GetKeyState(int nVirtKey); //O`w
    int gamemode = 0; //[h(0:^Cg,1:vC,9:I)
    int score = 0; //XRA
    int hiscore = 0; //nCXRA
    Image backi = Image.FromFile("backb.bmp"); //wi摜Ǎ
    Image playeri = Image.FromFile("player.gif"); //@ʏ摜Ǎ
    Image playerl = Image.FromFile("playerl.gif"); //@摜Ǎ
    Image playerr = Image.FromFile("playerr.gif"); //@E摜Ǎ
    Image bulleti = Image.FromFile("bullet.gif"); //e摜Ǎ
    Image bullet2i = Image.FromFile("bullet2.gif"); //e摜2Ǎ
    Image enemyi = Image.FromFile("enemy.gif"); //G@摜Ǎ
    Pen pen1 = new Pen(Color.Red, 2); //ԐF2̃y
    Brush brush1 = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //ԂuV
    Font font1 = new Font("CI", 20, FontStyle.Bold); //tHg𐶐
    Font fontt = new Font("CI", 80, FontStyle.Bold); //tHg𐶐
    Font fontm = new Font("CI", 25, FontStyle.Bold); //tHg𐶐
    Brush brushs = new SolidBrush(Color.Yellow); //F̃uV
    Timer timer = new Timer(); //^C}[̐
    int backy = 0; //1ڂ̔wi`JnYW
    Item player; //@̍\̃IuWFNg
    const int maxpb = 10; //e̍ő吔
    Item[] pba = new Item[maxpb]; //e̍\̃IuWFNgz
    const int cold = 10; //e˂̗p
    int waitpb = 0; //e˂̑҂
    const int maxenemy = 20; //G@̍ő吔
    Item[] enemya = new Item[maxenemy]; //G@̍\̃IuWFNgz
    int waitenemy = 0; //G@̏o҂
    int enemyint = 50; //G@̏oԊu
    string hiscoremsg = "";  //nCXRAbZ[W
    Random rnd = new Random(); //yǉzpRandomNX̃CX^X𐶐
    //ef[^Q[Jn̒lɂ
    void initData() {
        player.i = playeri;  //@̉摜
        player.x = 320; //@̒SXW
        player.y = 410; //@̒SYW
        player.hv = 0;  //@̍Ȇx
        player.v = 1;  //@\
        waitpb = 0; //e˂̑҂
        waitpb = 0; //e˂̑҂
        score = 0; //XRANA
    }
    //Wp摜`揈
    private void DrawItem(PaintEventArgs e, Item it) {
        int xx = it.x - it.i.Width / 2; //XW𓾂
        int yy = it.y - it.i.Height / 2; //YW𓾂
        e.Graphics.DrawImage(it.i, xx, yy);
    }
    //ȉ~`̏Փ˔(ACeaƃACebՓ˂Ă邩ǂԂ)
    private bool isHit(Item a, Item b) {
        int dest = (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); //Q
        double ra = (a.i.Width < a.i.Height) ? a.i.Width / 2.0 : a.i.Height / 2.0; //aa
        double rb = (b.i.Width < b.i.Height) ? b.i.Width / 2.0 : b.i.Height / 2.0; //ab
        return dest < (ra + rb) * (ra + rb); //QƓa̘âQr
    }
    //`揈̃I[oCh
    protected override void OnPaint(PaintEventArgs e) {
        base.OnPaint(e); //{NX̕`揈Ă
        e.Graphics.DrawImage(backi, 0, backy); //wi摜`
        e.Graphics.DrawImage(backi, 0, backy - backi.Height); //wi摜`
        if (gamemode == 0) { //X^[gʁH
            e.Graphics.DrawString("GAME1", fontt, brushs, 100, 150); //^Cg\
            e.Graphics.DrawString("Hit Enter Key", fontm, brushs, 200, 300); //bZ[W\
        } else { //vCʂQ[I[o[ʁH
            string s = String.Format("SCORE:{0:000,000}", score); //XRA
            e.Graphics.DrawString(s, font1, brushs, 400, 10); //XRA\
            if (player.v != 0) { //@\H
                switch (player.hv) { //@̌ɂĕ
                    case 0: player.i = playeri; break; //ʏ摜ɂ
                    case -1: player.i = playerl; break; //摜ɂ
                    case 1: player.i = playerr; break; //E摜ɂ
                }
                DrawItem(e, player); //@`
            }
            foreach (var pb in pba) { //SeɂČJԂ
                if (pb.v == 1) { //eH
                    DrawItem(e, pb); //e`
                }
            }
            foreach (var enemy in enemya) { //SG@ɂČJԂ
                if (enemy.v == 1) { //G@H
                    DrawItem(e, enemy); //G@`
                }
            }
        }
        if (gamemode == 9) { //Q[I[o[ʁH
            e.Graphics.DrawString("GAME OVER", fontm, brushs, 210, 150); //bZ[W\
            e.Graphics.DrawString(hiscoremsg, fontm, brushs, 150, 200); //nCXRAbZ[W\
            e.Graphics.DrawString("Hit Enter Key", fontm, brushs, 200, 300); //bZ[W\
        }
    }
    //L[͎
    void OnKeyDown(object o, KeyEventArgs e) { 
        if (e.KeyCode.ToString() == "Escape") { //EscL[Ă
            Close(); //tH[I
        }
        //^CgʂEnterL[Ă
        if (gamemode == 0 && e.KeyCode.ToString() == "Return") {
            initData(); //ef[^Q[Jn̒lɂ
            gamemode = 1; //vCɑJ
            timer.Start(); //^C}[Jn                  
        }
        //Q[I[o[ʂEnterL[Ă
        else if (gamemode == 9 && e.KeyCode.ToString() == "Return") {
            initData(); //ef[^Q[Jn̒lɂ
            for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
                enemya[i].v = 0; //ɂ
            }
            for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
                pba[i].v = 0; //ɂ
            }
            gamemode = 1; //vCɑJ
        }
        Invalidate(); //ʍĕ`˗
    }
    //^C}[Cxg
    void Play(object o, EventArgs e) { 
        backy = (backy + 1) % backi.Height; //1ڂ̔wi`JnYW
        if (gamemode == 1) { //vCʁH
            player.hv = 0; //@̌𖳂ɂĂ
            if (player.x > playeri.Width / 2 && GetKeyState((int)Keys.Left) < 0) { //͈͓ŁL[ĂH
                player.x -= 10; //@
                player.hv = -1; //
            }
            if (player.x < backi.Width - playeri.Width / 2 && GetKeyState((int)Keys.Right) < 0) { //͈͓ŁL[ĂH
                player.x += 10; //@E
                player.hv = 1; //E
            }
        }
        for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
            if (enemya[i].v != 0) { //G@݁H
                if (player.v != 0 && isHit(enemya[i], player)) { //@݂ՓˁH 
                    player.v = 0; //@
                    gamemode = 9; //Q[I[o[ɂ
                    if (score > hiscore) { //nCXRAXVH
                        hiscore = score; //nCXRAXV
                        hiscoremsg = "HiSCORE Update !"; //bZ[W
                    } else {
                        hiscoremsg = String.Format("HiSCORE is {0:000,000}", hiscore); //XRA
                    }
                    break; //
                }
                for (int j = 0; j < maxpb; j++) { //SeɂČJԂ
                    if (pba[j].v != 0 && isHit(enemya[i], pba[j])) { //e݂ՓˁH
                        enemya[i].v = 0; //̓G@
                        pba[j].v = 0;  //̎e
                        score += 10; //XRAAbv
                        break; //̓G@֐i
                    }
                }
            }
        }
        if (gamemode == 1) { //vCʁH
            if (GetKeyState((int)Keys.Space) < 0) { //Xy[XL[ĂH
                if (waitpb <= 0) { //eˑ҂Ԃ[H
                    for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
                        if (pba[i].v == 0) { //e\H
                            pba[i].v = 1; //\ɂ
                            pba[i].i = bulleti; //摜
                            pba[i].x = player.x; //XW͎@Ɠ
                            pba[i].y = player.y - player.i.Height / 2 - pba[i].i.Height / 2; //YW͎@̒
                            pba[i].vv = -5; //ړx
                            waitpb = cold; //eˑ҂ԂZbg
                            break; //1˂łOK
                        }
                    }
                }
            } else { //Xy[XL[ĂȂH
                waitpb = 0; //eˑ҂Ԃ[ɂĔˉ\ɂ
            }
        }
        if (waitenemy <= 0) { //G@o҂Ԃ[H
            for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
                if (enemya[i].v == 0) { //G@\H
                    enemya[i].v = 1; //\ɂ
                    enemya[i].i = enemyi; //摜
                    enemya[i].x = enemyi.Width / 2 + rnd.Next(backi.Width - enemyi.Width); //yύXz
                    enemya[i].y = -enemyi.Height; //YW͏[̒
                    enemya[i].vv = 5; //ړx
                    waitenemy = enemyint; //eˑ҂ԂZbg
                    break; //1@ołOK
                }
            }
        }
        for (int i = 0; i < maxpb; i++) { //SeɂČJԂ
            if (pba[i].v != 0) { //e݁H
                pba[i].i = (pba[i].i == bulleti) ? bullet2i : bulleti; //摜ݕύX
                pba[i].y += pba[i].vv; //ֈړ
                if (pba[i].y + pba[i].i.Height / 2 < 0) { //ʏ[ɏo
                    pba[i].v = 0; //e
                }
            }
        }
        for (int i = 0; i < maxenemy; i++) { //SG@ɂČJԂ
            if (enemya[i].v != 0) { //G@݁H
                enemya[i].y += enemya[i].vv; //ֈړ
                if (enemya[i].y - enemya[i].i.Height / 2 > backi.Height) { //ʉ[艺ɏo
                    enemya[i].v = 0; //G@
                }
            }
        }
        if (waitpb > 0) { //eˑ҂ԂZbgĂ
            waitpb--; //JEg_E
        }
        if (waitenemy > 0) { //G@o҂ԂZbgĂ
            waitenemy--; //JEg_E
        }
        Invalidate(); //ʍĕ`˗
    }
    //RXgN^
    Program() { 
        DoubleBuffered = true; //_uobt@OL
        KeyDown += new KeyEventHandler(OnKeyDown); //L[̓Cxgo^
        timer.Tick += new EventHandler(Play); //^C}[Cxgo^
        timer.Interval = 10; //^C}[C^[o(~b)
    }
    public static void Main() {
        Program f = new Program(); //̃IuWFNg𐶐
        f.Size = new Size(660, 520); //tH[̃TCYݒ
        f.Text = "Game"; //tH[ݒ
        f.ControlBox = false; //Rg[{bNX\
        f.FormBorderStyle = FormBorderStyle.Fixed3D; //TCYύX}~
        Application.Run(f); //tH[o
    }
}

K37 Ge̔

E莞(25^[)o߂sxAo̓G@̂ꂩGe𔭎˂悤ɂ悤
Eŏ1ڂ͊Jn100^[o߂Ăɂ悤
EāAGe͓ɕo\Ȃ̂ōő20Ƃ
Eˈʒu͓G@̂ɂ锭ˌƂ
EGẻ摜͈ȉ𗘗p\
@https://rundog.org/si/ebullet.gif ebullet.gif (20x20)
EGëړƏՓ˔͌

菇Edľ

@ f[^oFGẻ摜ǂݍImage^ϐenemybiň
A f[^oFGȅoԊuint^萔enemybintŒ`l25Ƃ
B f[^oFGȅo҂Ԃint^ϐwaitenemybŒ`l100Ƃ
C f[^oFGe̍ő吔int^萔maxenemybŒ`l20Ƃ
D f[^oFGe̍\̃IuWFNgzItem[] enemybaGe̍ő吔`
E FGȅo҂waitenemyb100ɖ߂
F `揈FSGeɂāAGe̔zenemyba̕\v0ȊOȂ̂`
G Fiȉj

oFK36iłOkj

Q[JK\FGe̔ˁAړAՓ˔ 
