關於我自己

我的相片
Welcome to discuss about : Chinese Traditional Medicine and Acupuncture Please send me the email: tccnchsu@gmail.com Chih-Yu Hsu

最新消息

總網頁瀏覽量

2009年9月24日 星期四

VC#課程




% 注意:複製網頁程式會編議譯錯誤是"字形問題
 
全國大專電腦軟體設計競賽
http://ga.libcc.nsysu.edu.tw/contest2009/index_problem.php

注意:
1.可以找洪子倫老師做專題。
2. 2009/10/30-31(五~六 ) 研討會召開 第十四屆人工智慧與應用研討會(TAAI2009)
2009/10/30(五 )調課至2009/11/6(五 )
3. 期中報告
    1.  題目
    2.  表單設計
    3.  功能設計
例  一
牙醫師的願望
1. 每日輸入行事曆:  日期 時間 事件
2. 當日早上輸出報表
3. 時間提前  警告
4. 發出簡訊提醒
例 二
 經濟老師要的軟體

例 三
水果盤

例 四
寫程式賺  第一屆手機軟體開發大賽

開發工具Microsoft® Visual Studio 2005 Express 即日起開放免費下載。
http://www.microsoft.com/taiwan/press/2006/04/0420.mspx

初學者開發人員學習中心

VC# 自學網站

C# for Sharp Kids - Part 1 - Getting Started

下載完整的電子書 http://go.microsoft.com/?linkid=6143354

creating your own 2D and 3D games.

SQL Server Express - 使用容易

help: http://msdn.microsoft.com/zh-tw/vcsharp/default.aspx

XNA Game Studio 3.1
http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&displaylang=en

陳擎文老師的C++, C++.NET,C#.NET教學文件下載

vc# 2008 download
http://www.microsoft.com/express/download/#webInstall

第十五週 1/8
Blender 2.49b Installer (10.5 MB)
http://www.blender.org/download/get-blender/
Blender 中文教學
牙齒
http://www.buy3dmodels.com/free-models/teeth.php


第十五週 12/25
參考3D飛碟程式
http://creators.xna.com/en-US/education/gettingstarted/bg3d/chapter10
TestCollision
將2D下列程式獨立為"方法"取名TestCollision
2D飛碟程式
http://creators.xna.com/en-US/education/gettingstarted/bg2d/chapter1



Rectangle cannonBallRect = new Rectangle(
                        (int)ball.position.X,
                        (int)ball.position.Y,
                        ball.sprite.Width,
                        ball.sprite.Height);

                    foreach (GameObject enemy in enemies)
                    {
                        Rectangle enemyRect = new Rectangle(
                            (int)enemy.position.X,
                            (int)enemy.position.Y,
                            enemy.sprite.Width,
                            enemy.sprite.Height);

                        if (cannonBallRect.Intersects(enemyRect))
                        {
                            ball.alive = false;
                            enemy.alive = false;
                            break;
                        }
                    }
}



第十四週 12/18

3D XNA 遊戲程式設計簡介
Introducing the 3D Tutorial


2D/3D 遊戲程式設計入門 ─ 使用XNA3.0與C#(附光碟)

http://www.books.com.tw/exep/prod/booksfile.php?item=0010426322

MODEL FBX

Free 3d models


XNA Tool To View 3D fbx files

No but its about 3 lines of code to make it yourself...


See http://msdn2.microsoft.com/en-us/library/bb203933.aspx

The Complete Sample


The code in this topic shows you the technique. You can download a complete code sample for this topic, including full source code and any additional supporting files required by the sample.

Download CPModel_Sample.zip.

XNA Game Studio 3.1


Game Programming Basics



第十三週 12/11


XNA 遊戲程式設計簡介

XNA 3.0 MediaPlayer做個簡單的音樂MP3播放器!


creators.xna.com

users.ece.gatech.edu/~lanterma/mpg/ece4893lec16_introtoxna.pdf



http://www.dotblogs.com.tw/teexit1224/Default.aspx



http://www.dotblogs.com.tw/teexit1224/archive/2008/12/05/6223.aspx

http://ccc.kmit.edu.tw/ccc/ccc.htm


第十二週 12/04

Beginner's Guide to 2D Games

1 Introducing the 2D Tutorial


2 Creating the Game Project

3 Adding Assets

4 Drawing the Background

5 Creating a Cannon

6 Firing Cannonballs

7 Adding Enemies

8 Destroying Enemies

9 Keeping Score

x Extra Credit - Community Tutorials

2.  Creating a button in XNA


第十一週 11/27


1. KEY 的事件

using System;


using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace KEY事件

{

public partial class Form1 : Form

{

public Label Label1;

public Button button1;

public Form1()

{

Label1 = new Label();

Label1.Location = new Point(30, 30);

Label1.Text = "1";

Controls.Add(Label1);



button1 = new Button();

button1.Location = new Point(60, 60);

button1.Size = new Size(60, 60);

button1.Text = "2";

Controls.Add(button1);

button1.Enabled = false;



KeyDown += new KeyEventHandler(Form1_KeyDown);

button1.Click += new System.EventHandler(Button1_Click);



}

void Button1_Click(object sender, System.EventArgs e)

{

MessageBox.Show("button_click");

}

string a="";

void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

{

if (e.KeyCode == Keys.A)

a = a + "A";

if (e.KeyCode == Keys.B)

a = a + "B";

if (e.KeyCode == Keys.C)

a = a + "C";

if (e.KeyCode == Keys.D)

a = a + "D";

if (e.KeyCode == Keys.E)

a = a + "E";

if (e.KeyCode == Keys.F)

a = a + "F";

if (e.KeyCode == Keys.G)

a = a + "G";

if (e.KeyCode == Keys.H)

a = a + "H";

if (e.KeyCode == Keys.I)

a = a + "I";

if (e.KeyCode == Keys.J)

a = a + "J";

if (e.KeyCode == Keys.K)

a = a + "K";

if (e.KeyCode == Keys.L)

a = a + "L";

if (e.KeyCode == Keys.M)

a = a + "M";

if (e.KeyCode == Keys.N)

a = a + "N";

if (e.KeyCode == Keys.O)

a = a + "O";

if (e.KeyCode == Keys.P)

a = a + "P";

if (e.KeyCode == Keys.Q)

a = a + "Q";

if (e.KeyCode == Keys.R)

a = a + "R";

if (e.KeyCode == Keys.S)

a = a + "S";

if (e.KeyCode == Keys.T)

a = a + "T";

if (e.KeyCode == Keys.U)

a = a + "U";

if (e.KeyCode == Keys.V)

a = a + "V";

if (e.KeyCode == Keys.W)

a = a + "W";

if (e.KeyCode == Keys.X)

a = a + "X";

if (e.KeyCode == Keys.Y)

a = a + "Y";

if (e.KeyCode == Keys.Z)

a = a + "Z";

if (e.KeyCode == Keys.Space)

a = a + " ";

if (e.KeyCode == Keys.Enter)

{

Label1.Text = a;

a = "";

}



}

private void Form1_Load(object sender, EventArgs e)

{



}

}

}















picturebox 的事件


http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox_events.aspx


滑鼠拖曳 Control.DoDragDrop Method



http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop.aspx











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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private System.Windows.Forms.ListBox ListDragSource;
        private System.Windows.Forms.ListBox ListDragTarget;
        private System.Windows.Forms.CheckBox UseCustomCursorsCheck;
         private System.Windows.Forms.Label DropLocationLabel;

        private int indexOfItemUnderMouseToDrag;
        private int indexOfItemUnderMouseToDrop;        

        private Rectangle dragBoxFromMouseDown;
        private Point screenOffset;

        private Cursor MyNoDropCursor;
        private Cursor MyNormalCursor;

   

        
        public Form1()
        {
            InitializeComponent();
            this.ListDragSource = new System.Windows.Forms.ListBox();
            this.ListDragTarget = new System.Windows.Forms.ListBox();
            this.UseCustomCursorsCheck = new System.Windows.Forms.CheckBox();
            this.DropLocationLabel = new System.Windows.Forms.Label();

            this.SuspendLayout();

            // ListDragSource
            this.ListDragSource.Items.AddRange(new object[] {"one", "two", "three", "four", 
                                                                "five", "six", "seven", "eight",
                                                                "nine", "ten"});
            this.ListDragSource.Location = new System.Drawing.Point(10, 17);
            this.ListDragSource.Size = new System.Drawing.Size(120, 225);
            this.ListDragSource.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ListDragSource_MouseDown);
            this.ListDragSource.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.ListDragSource_QueryContinueDrag);
            this.ListDragSource.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ListDragSource_MouseUp);
            this.ListDragSource.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ListDragSource_MouseMove);
            this.ListDragSource.GiveFeedback += new System.Windows.Forms.GiveFeedbackEventHandler(this.ListDragSource_GiveFeedback);

            // ListDragTarget
            this.ListDragTarget.AllowDrop = true;
            this.ListDragTarget.Location = new System.Drawing.Point(154, 17);
            this.ListDragTarget.Size = new System.Drawing.Size(120, 225);
            this.ListDragTarget.DragOver += new System.Windows.Forms.DragEventHandler(this.ListDragTarget_DragOver);
            this.ListDragTarget.DragDrop += new System.Windows.Forms.DragEventHandler(this.ListDragTarget_DragDrop);
            this.ListDragTarget.DragEnter += new System.Windows.Forms.DragEventHandler(this.ListDragTarget_DragEnter);
            this.ListDragTarget.DragLeave += new System.EventHandler(this.ListDragTarget_DragLeave);

            // UseCustomCursorsCheck
            this.UseCustomCursorsCheck.Location = new System.Drawing.Point(10, 243);
            this.UseCustomCursorsCheck.Size = new System.Drawing.Size(137, 24);
            this.UseCustomCursorsCheck.Text = "Use Custom Cursors";

            // DropLocationLabel
            this.DropLocationLabel.Location = new System.Drawing.Point(154, 245);
            this.DropLocationLabel.Size = new System.Drawing.Size(137, 24);
            this.DropLocationLabel.Text = "None";

            // Form1
            this.ClientSize = new System.Drawing.Size(292, 270);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {this.ListDragSource,
                                                        this.ListDragTarget, this.UseCustomCursorsCheck,
                                                        this.DropLocationLabel});
            this.Text = "drag-and-drop Example";

            this.ResumeLayout(false);

        }

        private void ListDragSource_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
        {
            // Get the index of the item the mouse is below.
            indexOfItemUnderMouseToDrag = ListDragSource.IndexFromPoint(e.X, e.Y);

            if (indexOfItemUnderMouseToDrag != ListBox.NoMatches) {

                // Remember the point where the mouse down occurred. The DragSize indicates
                // the size that the mouse can move before a drag event should be started.                
                Size dragSize = SystemInformation.DragSize;

                // Create a rectangle using the DragSize, with the mouse position being
                // at the center of the rectangle.
                dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width /2),
                                                               e.Y - (dragSize.Height /2)), dragSize);
            } else
                // Reset the rectangle if the mouse is not over an item in the ListBox.
                dragBoxFromMouseDown = Rectangle.Empty;

        }

        private void ListDragSource_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
            // Reset the drag rectangle when the mouse button is raised.
            dragBoxFromMouseDown = Rectangle.Empty;
        }

        private void ListDragSource_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 
        {

            if ((e.Button & MouseButtons.Left) == MouseButtons.Left) {

                // If the mouse moves outside the rectangle, start the drag.
                if (dragBoxFromMouseDown != Rectangle.Empty && 
                    !dragBoxFromMouseDown.Contains(e.X, e.Y)) {

                    // Create custom cursors for the drag-and-drop operation.
                    try {
                        MyNormalCursor = new Cursor("3dwarro.cur");
                        MyNoDropCursor = new Cursor("3dwno.cur");

                    } catch {
                        // An error occurred while attempting to load the cursors, so use
                        // standard cursors.
                        UseCustomCursorsCheck.Checked = false;
                    }finally {

                        // The screenOffset is used to account for any desktop bands 
                        // that may be at the top or left side of the screen when 
                        // determining when to cancel the drag drop operation.
                        screenOffset = SystemInformation.WorkingArea.Location;

                        // Proceed with the drag-and-drop, passing in the list item.                    
                        DragDropEffects dropEffect = ListDragSource.DoDragDrop(ListDragSource.Items[indexOfItemUnderMouseToDrag], DragDropEffects.All | DragDropEffects.Link);

                        // If the drag operation was a move then remove the item.
                        if (dropEffect == DragDropEffects.Move) {                        
                            ListDragSource.Items.RemoveAt(indexOfItemUnderMouseToDrag);

                            // Selects the previous item in the list as long as the list has an item.
                            if (indexOfItemUnderMouseToDrag > 0)
                                ListDragSource.SelectedIndex = indexOfItemUnderMouseToDrag -1;

                            else if (ListDragSource.Items.Count > 0)
                                // Selects the first item.
                                ListDragSource.SelectedIndex =0;
                        }

                        // Dispose of the cursors since they are no longer needed.
                        if (MyNormalCursor != null)
                            MyNormalCursor.Dispose();

                        if (MyNoDropCursor != null)
                            MyNoDropCursor.Dispose();
                    }
                }
            }
        }
        private void ListDragSource_GiveFeedback(object sender, System.Windows.Forms.GiveFeedbackEventArgs e) 
        {
            // Use custom cursors if the check box is checked.
            if (UseCustomCursorsCheck.Checked) {

                // Sets the custom cursor based upon the effect.
                e.UseDefaultCursors = false;
                if ((e.Effect & DragDropEffects.Move) == DragDropEffects.Move)
                    Cursor.Current = MyNormalCursor;
                else 
                    Cursor.Current = MyNoDropCursor;
            }

        }
        private void ListDragTarget_DragOver(object sender, System.Windows.Forms.DragEventArgs e) 
        {

            // Determine whether string data exists in the drop data. If not, then
            // the drop effect reflects that the drop cannot occur.
            if (!e.Data.GetDataPresent(typeof(System.String))) {

                e.Effect = DragDropEffects.None;
                DropLocationLabel.Text = "None - no string data.";
                return;
            }

            // Set the effect based upon the KeyState.
            if ((e.KeyState & (8+32)) == (8+32) && 
                (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {
                // KeyState 8 + 32 = CTL + ALT

                // Link drag-and-drop effect.
                e.Effect = DragDropEffects.Link;

            } else if ((e.KeyState & 32) == 32 && 
                (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {

                // ALT KeyState for link.
                e.Effect = DragDropEffects.Link;

            } else if ((e.KeyState & 4) == 4 && 
                (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) {

                // SHIFT KeyState for move.
                e.Effect = DragDropEffects.Move;

            } else if ((e.KeyState & 8) == 8 && 
                (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) {

                // CTL KeyState for copy.
                e.Effect = DragDropEffects.Copy;

            } else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)  {

                // By default, the drop action should be move, if allowed.
                e.Effect = DragDropEffects.Move;

            } else
                e.Effect = DragDropEffects.None;

            // Get the index of the item the mouse is below. 

            // The mouse locations are relative to the screen, so they must be 
            // converted to client coordinates.

            indexOfItemUnderMouseToDrop = 
                ListDragTarget.IndexFromPoint(ListDragTarget.PointToClient(new Point(e.X, e.Y)));

            // Updates the label text.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches){

                DropLocationLabel.Text = "Drops before item #" + (indexOfItemUnderMouseToDrop + 1);
            } else
                DropLocationLabel.Text = "Drops at the end.";

        }
        private void ListDragTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
        {
            // Ensure that the list item index is contained in the data.
            if (e.Data.GetDataPresent(typeof(System.String))) {

                Object item = (object)e.Data.GetData(typeof(System.String));

                // Perform drag-and-drop, depending upon the effect.
                if (e.Effect == DragDropEffects.Copy ||
                    e.Effect == DragDropEffects.Move) {

                    // Insert the item.
                    if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
                        ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item);
                    else
                        ListDragTarget.Items.Add(item);

                }
            }
            // Reset the label text.
            DropLocationLabel.Text = "None";
        }
        private void ListDragSource_QueryContinueDrag(object sender, System.Windows.Forms.QueryContinueDragEventArgs e) {
            // Cancel the drag if the mouse moves off the form.
            ListBox lb = sender as ListBox;

            if (lb != null) {

                Form f = lb.FindForm();

                // Cancel the drag if the mouse moves off the form. The screenOffset
                // takes into account any desktop bands that may be at the top or left
                // side of the screen.
                if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
                    ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
                    ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
                    ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) {

                    e.Action = DragAction.Cancel;
                }
            }
        }
        private void ListDragTarget_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
            // Reset the label text.
            DropLocationLabel.Text = "None";
        }
        private void ListDragTarget_DragLeave(object sender, System.EventArgs e) {
            // Reset the label text.
            DropLocationLabel.Text = "None";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        
        }
    }
       
        
    }


2. 多執行緒
http://msdn.microsoft.com/en-us/library/7a2f3ay4.aspx


using System;
using System.Threading;

public class Worker
{
    // This method will be called when the thread is started.
    public void DoWork()
    {
        while (!_shouldStop)
        {
            Console.WriteLine("worker thread: working...");
        }
        Console.WriteLine("worker thread: terminating gracefully.");
    }
    public void RequestStop()
    {
        _shouldStop = true;
    }
    // Volatile is used as hint to the compiler that this data
    // member will be accessed by multiple threads.
    private volatile bool _shouldStop;
}

public class WorkerThreadExample
{
    static void Main()
    {
        // Create the thread object. This does not start the thread.
        Worker workerObject = new Worker();
        Thread workerThread = new Thread(workerObject.DoWork);

        // Start the worker thread.
        workerThread.Start();
        Console.WriteLine("main thread: Starting worker thread...");

        // Loop until worker thread activates.
        while (!workerThread.IsAlive);

        // Put the main thread to sleep for 1 millisecond to
        // allow the worker thread to do some work:
        Thread.Sleep(1);

        // Request that the worker thread stop itself:
        workerObject.RequestStop();

        // Use the Join method to block the current thread 
        // until the object's thread terminates.
        workerThread.Join();
        Console.WriteLine("main thread: Worker thread has terminated.");
    }
}

Here is the output:












main thread: starting worker thread...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: working...
worker thread: terminating gracefully...
main thread: worker thread has terminated


第十週 11/20
1. 兩個表單互傳資料
    修改按鈕座標 button1.Location=new Point(0,0);
2. 利用 program.cs 仲界讓兩個表單互傳資料
3. 鍵盤事件


Control.OnKeyPress Method

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onkeypress.aspx


// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Initialize the flag to false.
    nonNumberEntered = false;

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        // Determine whether the keystroke is a number from the keypad.
        if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
        {
            // Determine whether the keystroke is a backspace.
            if(e.KeyCode != Keys.Back)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    //If shift key was pressed, it's not a number.
    if (Control.ModifierKeys == Keys.Shift) {
        nonNumberEntered = true;
    }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}




文字方塊

http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventhandler.aspx


 public partial class Form1 : Form
    {

    public Form1()
    {
        InitializeComponent();
        // Create a TextBox control.
        TextBox tb = new TextBox();
        this.Controls.Add(tb);
        tb.KeyPress += new KeyPressEventHandler(keypressed);
    }

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        char sstr = 'a';
       
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        
        if (Convert.ToBoolean((e.KeyChar.Equals(sstr))))

        {
            MessageBox.Show("test" + e.KeyChar + (char)Keys.Return);
            e.Handled = true;
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

     
    }

改成表單


 public partial class Form1 : Form
    {

    public Form1()
    {
        InitializeComponent();
        // Create a TextBox control.
        //TextBox tb = new TextBox();
        //this.Controls.Add(tb);
        this.Focus();
        this.KeyPress += new KeyPressEventHandler(keypressed);
        
    }

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        char sstr = 'a';
       
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        
        if (Convert.ToBoolean((e.KeyChar.Equals(sstr))))

        {
            MessageBox.Show("test" + e.KeyChar + (char)Keys.Return);
            e.Handled = true;
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

     
    }


以鍵盤鍵控制 PictureBox 的移動


 public partial class Form1 : Form
    {
    public PictureBox pb = new PictureBox();
    Point mypoint = new Point(500,500);
    public Form1()
    {
        InitializeComponent();
        // Create a PictureBox control.
        
        pb.BackColor = Color.Black;
        this.Controls.Add(pb);
        this.KeyPress += new KeyPressEventHandler(keypressed);
        
    }

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        char sstrl = 'a';
        char sstrr = 'd';
        char sstrf = 'w';
        char sstrb = 'x';
        char sstrs = 's';
        
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        
        if (Convert.ToBoolean((e.KeyChar.Equals(sstrl))))

        {
           // MessageBox.Show("test" + e.KeyChar + (char)Keys.Return + Convert.ToString(mypoint.X));
          
            mypoint.X = mypoint.X -100;
            mypoint.Y = mypoint.Y;
            pb.Location = mypoint;
            e.Handled = false;
        }
        else if(Convert.ToBoolean((e.KeyChar.Equals(sstrr))))
 
        {
            
            e.Handled = true;
            mypoint.X = mypoint.X + 100;
            mypoint.Y = mypoint.Y ;
            pb.Location = mypoint;
        }

        else if (Convert.ToBoolean((e.KeyChar.Equals(sstrf))))
        {
            e.Handled = true;
            mypoint.X = mypoint.X ;
            mypoint.Y = mypoint.Y + 100;
            pb.Location = mypoint;

        }
        else if (Convert.ToBoolean((e.KeyChar.Equals(sstrb))))
        {
            
            e.Handled = true;
            mypoint.X = mypoint.X;
            mypoint.Y = mypoint.Y - 100;
            pb.Location = mypoint;
        }
        else if (Convert.ToBoolean((e.KeyChar.Equals(sstrs))))
        {
            e.Handled = true;
            mypoint.X = mypoint.X + 100;
            mypoint.Y = mypoint.Y + 100;
            pb.Location = mypoint;
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

     
    }



4. 關於拖曳form的問題
http://social.msdn.microsoft.com/forums/zh-TW/233/thread/3ef98e8a-ba69-4dfb-b07d-8961498b0dbc/

如何利用 VC# 寫一支常駐程式去 監督 keyboard
http://social.msdn.microsoft.com/forums/zh-TW/233/thread/63f1850b-7eed-410d-a713-d5b83865d5d5

第九週  11/13


目地:
N-Puzzle / Npuzzle Game
 
http://www.funmin.com/online-games/n-puzzle/index.php?level=1
 
------------------------------------------------------------------------------------------------------
 
int[] score = new int[5];




score[0] = 0;

score[1] = 1;

score[2] = 2;

score[3] = 3;

score[4] = 4;

Random rd = new Random();

int myrnd=0;

int temp=0;



for (int i = 0; i <= 2; i++)

{

myrnd = rd.Next(1, 4 - i);

temp = score[myrnd];

score[myrnd] = score[4 - i];

score[4 - i] = temp;

}



button6.Text = Convert.ToString(temp);

button5.Text = Convert.ToString(myrnd);

button1.Text = Convert.ToString(score[1]);

button2.Text = Convert.ToString(score[2]);

button3.Text = Convert.ToString(score[3]);

button4.Text = Convert.ToString(score[4]);
 
------------------------------------------------------------------------------------------------------------
還未使用 for 迴圈

int[] score = new int[5];




score[0] = 0;

score[1] = 1;

score[2] = 2;

score[3] = 3;

score[4] = 4;

Random rd = new Random();

int myrnd;

int temp;



myrnd = rd.Next(1,4-0);

temp=score[myrnd];

score[myrnd] = score[4-0];

score[4-0] = temp;



myrnd = rd.Next(1, 4-1);

temp = score[myrnd];

score[myrnd] = score[4-1];

score[4-1] = temp;



myrnd = rd.Next(1, 4 - 2);

temp = score[myrnd];

score[myrnd] = score[4 - 2];

score[4 - 2] = temp;









button6.Text = Convert.ToString(temp);

button5.Text = Convert.ToString(myrnd);

button1.Text = Convert.ToString(score[1]);

button2.Text = Convert.ToString(score[2]);

button3.Text = Convert.ToString(score[3]);

button4.Text = Convert.ToString(score[4]);

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

第八週  11/06


繳期中報告
 

 
第七週

10/30 調課至11/06

家庭作業
1. 產生 0到 8 不重複的亂數並顯示在3x3的 9 個按鈕上。

public partial class Form1 : Form


{

System.Windows.Forms.Button Button1;

System.Windows.Forms.Label Label1;

System.Windows.Forms.Button[] Buttons;



public Form1()

{

InitializeComponent();

}



private void Form1_Load(object sender, EventArgs e)

{

//this.Button1.Anchor = (System.Windows.Forms.AnchorStyles.Top
System.Windows.Forms.AnchorStyles.Right);





Button1 = new System.Windows.Forms.Button();



Label1 = new System.Windows.Forms.Label();



Label1.Location = new System.Drawing.Point(100 , 250);

Label1.Text = "hello";

this.Controls.Add(Label1);



Button1.Text = "test";



Button1.Location = new System.Drawing.Point(10, 250);



Button1.Size = new Size(30, 30);

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Controls.Add(Button1);

string[] stringArray = new string[9];







Buttons = new System.Windows.Forms.Button[9];







for (int i = 0; i < 9; ++i)

{



Buttons[i] = new Button();



Buttons[i].Text = stringArray[i];



if (i<=2)

Buttons[i].Location = new System.Drawing.Point(10 + i * 80, 10);

else if (i>2 && i<=5)

Buttons[i].Location = new System.Drawing.Point( 10 + (i-3) * 80,40);

else if (i > 5 && i <= 9)

Buttons[i].Location = new System.Drawing.Point(10 + (i-6) * 80,70);





this.Buttons[i].Click += new System.EventHandler(this.Button1_Click);





Buttons[i].TabIndex = i;

Buttons[i].Text = Convert.ToString(Buttons[i].TabIndex);

//MessageBox.Show(Convert.ToString(Buttons[i].TabIndex));

this.Controls.Add(Buttons[i]);



}



}



private void Button1_Click(object sender, System.EventArgs e)

{



if (sender.Equals(Button1))

{

Randomno();



}



}



private void Randomno()

{

int sn,temp;

int [] snarray={0, 1, 2, 3, 4, 5, 6, 7, 8 };

//int[] farray = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };

Label1.Text = "亂數產生了";



Random rd = new Random();

for (int i = 0; i < 9; ++i)

{



sn = rd.Next(0, 8-i);

temp=snarray[sn];

snarray[sn] = snarray[8 - i];

snarray[8-i]= temp;

}



for (int i = 0; i < 9; ++i)

{

Buttons[i].TabIndex = snarray[i];

Buttons[i].Text = snarray[i].ToString();

}

}



}

------------------------------------------------------------------------------------------------------
進度




1. 如何判斷哪一個按鈕被按



//==================================================================



private void Form1_Load(object sender, EventArgs e)



{









//this.Button1.Anchor = (System.Windows.Forms.AnchorStyles.Top



System.Windows.Forms.AnchorStyles.Right);



Button1 = new System.Windows.Forms.Button();



Button1.Text = "test";



Button1.Location = new System.Drawing.Point(10, 10 + 10 * 20);



Button1.Size = new Size(30, 30);



this.Button1.Click += new System.EventHandler(this.Button1_Click);



this.Controls.Add(Button1);



string[] stringArray = new string[3];



Buttons = new System.Windows.Forms.Button[3];



for (int i = 0; i < 3; ++i)



{



Buttons[i] = new Button();



Buttons[i].Text = stringArray[i];



Buttons[i].Location = new System.Drawing.Point(



10, 10 + i * 20);



this.Buttons[i].Click += new System.EventHandler(this.Button1_Click);



Buttons[i].TabIndex = i;



Buttons[i].Text = Convert.ToString(Buttons[i].TabIndex);



//MessageBox.Show(Convert.ToString(Buttons[i].TabIndex));



this.Controls.Add(Buttons[i]);



}



}









private void Button1_Click(object sender, System.EventArgs e)



{



for (int i = 0; i < 3; ++i)



{









if(sender.Equals(Buttons[i]))



{



MessageBox.Show(Convert.ToString(Buttons[i].TabIndex));



}



}



}



//==================================================================



2. 把大的方法拆成小方法



private void Button1_Click(object sender, System.EventArgs e)









{







check_results();



display_chess();









}









3. 8 puzzle game



3.1 產生 0-8 九個亂數放入一維陣列中



Random rd=new Random();









rd.Next(0,8);



/*



參考



rd.NextDouble();









rd.Next(1);









rd.Next();









*/



3.2



以控制項陣列方式完成九個按鈕



3.3



將一維陣列中的九個亂數放入按鈕的屬性text及tabindex



3.4



取代數字0改為空白



3.5



交換空白按鈕與周圍按鈕的屬性



tabindex及text

















































































N-Puzzle / NpuzzleGame



http://www.funmin.com/online-games/n-puzzle/index.php 8 puzzle game in java









8 puzzle wiki



http://www.algorithm-code.com/wiki/8-puzzle_solver



http://sls.weco.net/blog/love0518/07-jun-2007/2051









http://www.roseindia.net/tutorialsearch/?t=8+puzzle+game+in+java&s=OK



8 puzzle用C#或者JAVA / 資訊類作業/ 程式設計俱樂部



Game 8 Puzzle



http://www.sourcecodeonline.com/list?q=game_8_puzzle









4. Tic Ta to 人工智慧









Tic-Tac-Toe









5.









Beginner's Guide to 2D Games















Dive into XNA Game Studio by creating your own 2D action game, with the help of this in-depth video tutorial.





















Complete with Xbox 360® controller support, collision detection, and sprite-based font drawing, this 2D game tutorial is your ticket to getting started as a Creator!









Get started with the 2D Tutorial.



























如何利用 VC# 寫一支常駐程式去 監督 keyboard















(駭客的後門程式)+網路程式















-------------------------------------------------------------------------------------------------------
第六週 10/23
 
複習


1.

在第一個表單新增按鈕

2. 新增第二及第三表單

3. 在第一個表單新增按鈕寫入程式,

功能: 開啟新增第二及第三表單



4. 在第三表單新增按鈕

功能: 每按一下數字 1 2 3 循環變化

5. 再新增三個按鈕利用timer及swicth 製作交通號誌 紅黃綠燈

c=c+1;

count = c % 3+1;

label1.Text = count.ToString();

switch (c)

{

case 1:

button2.Text = count.ToString();

break;

case 2:

button3.Text = count.ToString();

break;

case 3:

button4.Text = count.ToString();

break;



6. 將三個按鈕改為控制項陣列方式完成





public partial class Form2 : Form

{

int c, count;

System.Windows.Forms.RadioButton[] radioButtons;

public Form2()

{

InitializeComponent();

}



private void ryg()

{

c=c+1;

count = c % 3+1;

label1.Text = count.ToString();

switch (count)

{

case 1:

button2.Text = count.ToString();

button2.BackColor = Color.Red;

button3.BackColor = Color.Black;

button4.BackColor = Color.Black;



radioButtons[1].BackColor = Color.Red;

radioButtons[2].BackColor = Color.Black;

radioButtons[3].BackColor = Color.Black;







break;

case 2:

button3.Text = count.ToString();

button3.BackColor = Color.Yellow;

button2.BackColor = Color.Black;

button4.BackColor = Color.Black;



radioButtons[1].BackColor = Color.Black;

radioButtons[2].BackColor = Color.Yellow;

radioButtons[3].BackColor = Color.Black;



break;

case 3:

button4.Text = count.ToString();

button4.BackColor = Color.Green;

button3.BackColor = Color.Black;

button2.BackColor = Color.Black;



radioButtons[1].BackColor = Color.Black;

radioButtons[2].BackColor = Color.Black;

radioButtons[3].BackColor = Color.Green;

break;

}







}



private void timer1_Tick(object sender, EventArgs e)

{



ryg();



}



private void Form2_Load(object sender, EventArgs e)

{

label1.Visible = false;

//button1.Visible = false;

timer1.Enabled =false;

radioButtons = new System.Windows.Forms.RadioButton[4];



for (int i = 1; i <= 3; ++i)

{



radioButtons[i] = new RadioButton();



//radioButtons[i].Text = stringArray[i];



radioButtons[i].Location = new System.Drawing.Point(



10, 10 + i * 20);



this.Controls.Add(radioButtons[i]);

}







}



private void button1_Click(object sender, EventArgs e)

{

timer1.Enabled = true;

}



private void button2_Click(object sender, EventArgs e)

{



}

}






第五週 10/16

1. 利用程式產生表單上的按鈕

public partial class Form1 : Form
{

public System.Windows.Forms.Button Button1;

public Form1()

{

InitializeComponent();

}
private void Button1_Click(object sender, EventArgs e)

{

MessageBox.Show("Today is " + DateTime.Today.ToLongDateString());

}

private void Form1_Load(object sender, EventArgs e)

{

Button1 = new System.Windows.Forms.Button();

Button1.Text = "按鈕";

Button1.Location = new System.Drawing.Point(10, 10 + 10 * 20);

Button1.Size = new Size(30, 30);

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Controls.Add(Button1);

}

}


2. 製作按鈕的 click事件
http://msdn.microsoft.com/zh-tw/library/system.windows.forms.control.mousedown.aspx

private void Button1_Click(Object sender, System.EventArgs e)

{

MessageBox.Show("Today is " +DateTime.Today.ToLongDateString());

}




3.Visual C++ 如何用陣列做出一堆button或picbox
http://msdn.microsoft.com/en-us/library/dwafxk44.aspx
Help
This example programmatically creates a group of Windows Forms RadioButton controls and sets their Text properties to values from an array of strings.


private void button1_Click(object sender, System.EventArgs e)


{

string[] stringArray = new string[3];



stringArray[0] = "Yes";

stringArray[1] = "No";

stringArray[2] = "Maybe";



System.Windows.Forms.RadioButton[] radioButtons =

new System.Windows.Forms.RadioButton[3];



for (int i = 0; i < 3; ++i)

{

radioButtons[i] = new RadioButton();

radioButtons[i].Text = stringArray[i];

radioButtons[i].Location = new System.Drawing.Point(

10, 10 + i * 20);

this.Controls.Add(radioButtons[i]);

}

}


2.  調整大小

Buttons[i].Size=new Size(30,30);

3. Help: How to: Call a Button's Click Event Programmatically
    // Call the Click event of button1.
     test.PerformClick();



第四週 10/9

1. 
時鐘 timer

時間 DateTime d1 = DateTime.Now;


 "日期時間"+d1.ToString()

2. 丟骰子
Random rd=new Random();

rd.NextDouble();
rd.Next(1);
rd.Next();
rd.Next(1,8);


DHTML puzzle! is a puzzle game in JavaScript.
4.  Tic Ta to 人工智慧
Tic-Tac-Toe



第三週 10/2

1.開起另一個表單
Form2 test = new Form2();


test.Show();
2.手動按鈕連加

賽局中的最佳化決策




五、 Player 1與Player 2一起玩井字遊戲(Tic-Tac-Toe),Player 1使用 ‘0’ 符號,Player 2使用 ‘X’ 符號,並由Player 1先下。

1. 假設此賽局僅能下六子(Player 1與Player 2各下三子),請問Player 1總共有多少種策略(strategies)可供運用? (6%)

2. 假設賽局進行至第六子,狀況如下所示,請為剩餘的賽局繪製搜尋樹(search tree),並計算平手的機率。 (6%)

http://blueocean-tb.com.tw/uploads/94%E8%B3%87%E7%AE%A1_20080926182129.pdf



Tic-Tac-Toe

Tic-Tac-Toe 賽局中的最佳化決策(google)
2. 大富翁的一次走一步
3. 大富翁的一次走?步 (?   隨機的), 丟骰子
4.  水果盤遊戲的圖形如何取得?

5.  水果盤遊戲
     C=C+1;

     WHILE C>10000
     Timer.enable=false
     END
      
(下週預告)

1. 連結  SQL Server Express



第二週 9/25 

網站教學
http://www.powercam.cc/slide/3786

http://www.powercam.cc/slide/3785


利用記憶體進行數字累積連續相加

1. 手動按鈕連加
1+1+1+1+1
2. 自動連加 for
3. 時鐘 timer
4. 時間 DateTime d-DateTime.Now; "日期時間"+d.ToString()+"\r\n"
5. 產生 1 2 3 重複出現
6. 利用 if 判斷製作紅綠燈


----------------------------------------------------------------
namespace WindowsFormsApplication1{
public partial class Form1 : Form {
int count = 0;
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) {
count = count + 1; label1.Text = Convert.ToString(count); }
private void timer1_Tick(object sender, EventArgs e) {
int threeno; count = count + 1; threeno = count%3; label1.Text = Convert.ToString(threeno+1); } }}
----------------------------------------------------------------
作業
1. 水果盤遊戲
(下週預告)
丟骰子


Random rd=new Random();
rd.NextDouble();
rd.Next(1);
rd.Next();
rd.Next(1,8);
猜拳遊戲

第一週 9/18
1. 文字與文字方塊
2. 文字的相加
3. 標籤的顯示作用
4.物件的屬性
5.文字與數字的轉換
6.以文字方塊輸入兩個文字,在轉成數字後相加
作業
四個文字方塊
兩兩相加後再相成





2009/12/25-2010 1/15 教期末報告與程式

d9643477 林煌麟 http://www.wretch.cc/blog/whatever0806/519460
D9795257 姜俊輝 http://jjhcyy917.blogspot.com/
d9643464 史萬澤 http://q020385791.blogspot.com
D9642271 王義榮 http://fcumathd9642271.blogspot.com
d9746678 石孟昌 http://got0914.blogspot.com/

d9746738 吳東翰 http://wayneluke2001.blogspot.com/

d9643505 吳沛龍 http://tw.myblog.yahoo.com/jw!255y3ErHEUFLgXz9YEg-/article?mid=8&next=4&l=f&fid=1
D9539186 陳弘男 http://www.alamkil.blogspot.com/

D9642268 謝介文 http://www.wretch.cc/blog/c001jp6m3
廖敏芳
http://myweb.fcu.edu.tw/~d9756272/

羅鈞輿
http://www.wretch.cc/blog/ivan770708

施宜亨
http://d9790991.blogspot.com/

何孟弦
http://www.wretch.cc/blog/jordan205

林郁銘
http://billy31610.blogspot.com/


吳可鈞
http://rainbow705.blogspot.com/


游復凱
http://www.wretch.cc/blog/yyufukaii


劉佳馨
http://www.wretch.cc/blog/DuoQ

黎盛名
http://www.wretch.cc/blog/jk52062

顏隆勝
http://d9680859.blogspot.com/


林宏彥
http://felixlye.blogspot.com/

楊宗培
http://yapei125.blogspot.com/
林明志
http://www.wretch.cc/blog/kim20401