C/C++ 程式語言 main 函數參數的用途說明

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

在 Windows 系統下可以使用system搭配 MS-DOS 的 color 指令(可參考此篇文章 更改 命令提示字元 Command Prompt (cmd) 的顯示顏色 )與 cls 來達成文字顏色的動畫。

color 指令示範影片:


此 color 指令後面的十六位數字是此 color 程式指令的參數,在 C/C++ 程式語言中可以使用 main(int argc, char *argv[]) 內的 argc 與 argv 來達成類似像color 這個擁有執行檔指令參數的功能。 

程式碼如下:

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{  
    cout << "程式執行檔參數個數:" << argc << endl;

    for(int i = 0; i < argc; i++)
        cout << "第[" << (i + 1) << "]個參數為" << argv[i] << endl;

    return 0;
}

筆者使用 VS CodeMinGW-w64 toolchain 來執行此程式碼,檔名為 1.cpp,編譯後會產生 1.exe 執行檔,執行結果如下:


此時開啟 Terminal 輸入指令:

1.exe one two three

可看到如下結果:

當輸入 1.exe one two three 給 1.exe 時, main 的 argc 會存放 4 這個數字,而 argv[] 的內容如下:

    argv[0]:"1.exe"
    argv[1]:"one"
    argv[2]:"two"
    argv[3]:"three"


C++程式語言陣列與迴圈的應用:MS-DOS Color Background and Text

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

在 Windows 系統下可以使用system搭配 MS-DOS 的 color 指令(可參考此篇文章 更改 命令提示字元 Command Prompt (cmd) 的顯示顏色 )與 cls 來達成文字顏色的動畫。

color 指令示範影片:



C++程式碼:

// 陣列與迴圈的應用:MS-DOS Color Background and Text

#include <iostream>
#include <Windows.h>
using namespace std;

int main()
{
    system("pause");
    char hex[17] = "0123456789ABCDEF";
    char cmd[20] = "color 00";
    // bg: backgroud
    for(int bg = 0; bg <= 15; bg++) {
        cmd[6] = hex[bg];
        // fg: foreground
        for(int fg = 0; fg <= 15; fg++) {
            cmd[7] = hex[fg];
            //cout << cmd << endl;
            system(cmd);
            cout << "YunlinSong";
            Sleep(200);
            system("cls");
            Sleep(200);        
        }
    }
    system("pause");
    return 0;
}

  



不使用 Arduino 內建函式庫來點亮LED燈

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

本文將說明如何在不使用 Arduino 內建函式庫()來製作 LED 閃爍功能(Blink)。使用的軟硬環境如下:

軟體

硬體

Windows 10

Arduino UNO * 1

Arduino IDE

LED * 2

Google Chrome

220 OHM 電阻 * 2

Tinkercad

麵包版 * 1

Arduino Uno 的微處理器是Atmel ATMega328p,規格手冊下載網址為 https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

在不用Arduino函示庫下,使用C語言來做微處理器程式設計時,須對微處理器的三個暫存器(DDR, PORT, PIN)做設定,此部分可參考https://docs.arduino.cc/hacking/software/PortManipulation

舉例來說,若要使用 Arduino Uno pin 13 來控制 LED 的開起與關閉,而 pin 13 是 PORTB 來做映射(mapping),首先要設定 pin 13 為輸出:

DDRB = B00100000;  // sets Arduino pins 13 as outputs

設定 pin 13 為High電位或是低電位:

PORTB = B00100000; // sets digital pin 13 HIGH

PORTB = B00000000; // sets digital pin 13 LOW

<avr/io.h> 有這些暫存器位址以及輸入輸出腳位位址。


電路設計



程式碼

#include <avr/io.h>

#include <util/delay.h>


int main(void)

{

  DDRB = B00100000; // Set pin 13 as output

  DDRB |= _BV(DDB4); // Set pin 12 as output

  DDRD |= _BV(DDD7); // Set pin 7 as output


  while (1)

  {

    PORTB = B00100000; // sets digital pin 13 HIGH

    PORTB |= _BV(PORTB4); // pin 12 High

    PORTD |= _BV(PORTD7); // pin 13 High

    _delay_ms(500);


    PORTB = B00000000; // sets digital pin 13 LOW

    PORTB &= ~_BV(PORTB4); // pin 12 Low

    PORTD &= ~_BV(PORTD7); // pin 7 Low

    _delay_ms(500);

  }

  return 0; // We will never get here!

}


TinkerCAD 範例連結:https://www.tinkercad.com/things/dGOkHOlGgc0


結果影片:






Scratch 3 遊戲:狗吃香蕉(Dog eats bananas)

 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.


【遊戲名稱】狗吃香蕉(Dog eats bananas)

【基本動作】
  1. 點擊綠旗遊戲開始。
  2. 在畫面上按下滑鼠左鍵,小狗開始追蹤滑鼠。
  3. 小狗吃到香蕉時,香蕉一根一根地少。
  4. 小狗吃到香蕉時,會說出:「Yummy」(好吃)。
  5. 香蕉被吃到時,會跑到畫面上的隨機位置。

【遊戲試玩】



製作步驟:(底下程式積木僅供參考,設計方式不是只有一種。)
步驟、選擇小狗(Dog1)角色

步驟、小狗積木
功能為按下滑鼠左鍵,小狗開始追蹤滑鼠。


步驟、選擇香蕉(Banana)角色

步驟、製作香蕉(Banana)角色被吃掉的造型。
複製原本的
香蕉(Banana)角色造型後,再使用選擇(Select)工具點選一根香蕉來刪除。



步驟五、香蕉積木
功能為小狗吃到香蕉時,香蕉一根一根地少,以及香蕉被吃到時,會跑到畫面上的隨機位置。

步驟六
增加 “文字轉語音” 擴充積木

點選添加擴展圖示


選擇文字轉語音的擴展

步驟七、舞台背景積木
積木功能為小狗吃到香蕉時,會說出:「Yummy」(好吃)



恭喜您完成了。

可增加的額外功能:
  • 計時與計分
專案範例網址:https://scratch.mit.edu/projects/252457534

MakeCode Microbit 雙按鈕PK遊戲

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

 LED 矩陣座標

首先要了解 Microbit LED 矩陣座標,由左到右的水平方向為稱為X座標(下圖的藍色箭頭),由上到下的垂直方向稱為Y座標(下圖的綠色箭頭)。左上角白色箭頭所指的座標為(0,0),而正中央座標為(2,2)。


步驟一:建立一個新變數,名稱為「球」


步驟二:「球」的起點放在正中央(如下圖)


步驟三:

按鈕A按下時,「球」往左移(-1)


步驟四:按鈕B按下時,「球」往右移(1),請思考如何做?

步驟五:「球」碰到最左邊邊緣時(x=0)

步驟六:「球」碰到最右邊邊緣時(x=4),請思考如何做?


步驟七:自動判斷勝負
提示判斷球的座標在那兒是按鈕A獲勝,請思考如何做?