2023年1月13日 星期五

CY.hsin week19

 //加入下棋音效

import processing.sound.*;

SoundFile soundHit;

void setup(){

    size(600,600);

    soundHit=new SoundFile(this,"hit.mp3");

    

}

int [][] go={

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

};

int N=0;//現在有幾個棋子

void draw(){

  background(#FFAA64);

  //畫線

  for(int i=1;i<=19;i++){//畫19條線

    line(30,30*i,570,30*i);//直線

    line(30*i,30,30*i,570);//橫線

  }

  //畫棋盤上的點點

  fill(0);//黑色的

  ellipse(120,120,10,10);

  ellipse(120,300,10,10);

  ellipse(120,480,10,10);

  ellipse(300,120,10,10);

  ellipse(300,300,10,10);

  ellipse(300,480,10,10);

  ellipse(480,120,10,10);

  ellipse(480,300,10,10);

  ellipse(480,480,10,10);

  //畫黑棋/白棋

  for(int i=0;i<19;i++){

    for(int j=0;j<19;j++){

      if(go[i][j]==1){

        fill(0);

        ellipse(30+j*30,30+i*30,30,30);//30*30的黑棋,下在鼠標按的位置

      }else if(go[i][j]==2){

        fill(255);

        ellipse(30+j*30,30+i*30,30,30);//30*30的白棋,下在鼠標按的位置

       }

    }

  }

}

void mousePressed(){

  int i=(mouseY-15)/30;//x座標

  int j=(mouseX-15)/30;//y座標

  soundHit.play();//下棋播放音效

  go[i][j]=(N%2==0)?1:2;//不是1就是2,1=白色、2=黑色。

  N++;//增加棋子

}

2023年1月12日 星期四

Ru的互動技術筆記

貓狗大戰

Stage1 (遊戲封面)

這是自己仿畫原版貓狗大戰的遊戲封面圖,底下有利用 rect 製作開始遊戲以及遊戲說明的按鈕,mousePressed() 去設定滑鼠點擊的範圍,跳轉到 stage2 或者 stage5。

Stage2 (遊戲介面)


在期末作業裡,我們增加了道具的選項 (子彈放大、雙倍傷害、血量+10%),道具的部份我們宣告了 boolean button=true,就是一開始道具的按鈕會顯示在場景中,然後在 mousePressed() 中,道具按鈕的範圍點選後,改成 button=false,這樣按鈕就會消失了!還有一個問題是子彈放大後,如果在那一回合中沒有擊中,子彈會回復原本的大小,所以宣告了 boolean toolbomb1Enable = false,在滑鼠點擊按鈕範圍時 toolbomb1Enable = true,射擊到其他地方時 toolbomb1Enable = false,這樣就能在射擊失敗後回復原本的大小了。

第二個新增的是時間,設定一回合進行的時間是十秒,如果沒有在時間內射出去就會轉換球權。

第三個是改變彈道的線條,期中的時候我們是沿用老師一開始教的直線去瞄準,後來改拋物線這樣看起來比較好看一點!這段因為要跟著回合轉換所以寫在 who=1、who=2 裡面,nowX1、nowY1 表示拋物線的起始點在 dogX1、dogY1 (狗子)的位置,貓咪回合的拋物線同理,t 表示畫的圓圈個數 (拋物線是虛線的感覺)。

Stage3 (狗子勝利)


當貓咪的血量扣完時,會自動跳轉到狗子勝利的場景,同時 sound1.stop (把遊戲的背景音樂關閉),播放勝利的擊掌聲。

Stage4 (貓咪勝利)


當狗子的血量扣完時,會自動跳轉到貓咪勝利的場景,同時 sound1.stop (把遊戲的背景音樂關閉),播放勝利的擊掌聲。

Stage4 (玩法說明)    

玩法的地方,圖片有點做壞掉了,因為要把貓狗跟道具的圖示去背貼到裡面所以畫質被吃掉。


統整:需要改進的地方是畫面太小,當初是用老師原本設定的值去製作,所以沒改到,而且增加很多按鈕之後,要再改畫面大小每個東西都要重改,所以就沒更動了。當初再做進階版本的時候有想過要增加風力,也想增加力量條,如果有更多時間感覺可以做得更好!

期末作業 過馬路

 

import processing.sound.*;  // 加入音樂函式庫

SoundFile sound  // 宣告音檔

 

int fin = 0;  // 初始狀態為0

PImage playerStay;  // 宣告圖片 (玩家上下左右移動時之圖、車子、房子、底圖)

 

int roleMoveX = 250;  // 宣告玩家初始位置

int roleMoveY = 450;

 

int send_letter = 1;  // 關卡數

 

void setup() {

  size(500, 500);

  playerStay = loadImage("Stay.png");  // 載入圖片(玩家上下左右移動時之圖、車子、房子、底圖)

  sound = new SoundFile(this, "squaredance.wav");  // 載入音檔

  sound.play();  // 開始播放音樂

  sound.loop();  // 於音樂播畢時從頭重複播放

}

void draw() {

  最初fin為0時

    顯示主頁底圖

    point(mouseX, mouseY);  // 判斷鼠標位置

  fin為1時 開始遊戲

    顯示遊戲底圖

    drawRoad();     // 繪製道路

    drawRiver();       // 繪製河流

    Build();  // 放置房屋

    Player();  // 玩家位置

  }

  End();  // 改變狀態

  point(mouseX, mouseY);  // 判斷鼠標位置

}

   

float []carX = new float[20];  // 定義車於

void drawRoad();

void drawRiver();

void Build();

void Player();

void End();

互動技術 week07

接續上周未完

1.自動洗牌


2.選擇棋子時 顯示綠色


3.移動棋子


4.棋子移動後 清空原位置


5.放入音樂

互動技術 week05

1.先畫出格線


2.用陣列以迴圈方式排上字


3.放入中文字替代數字


4.棋子字上顏色(黑、紅)


5.設定鼠標,點擊消失及長按後移動位置


6.改變陣列 做出暗棋


7.加上翻棋


Week_17 2022.12.26

1. 期末作品目前成果

---------------------------------- github ----------------------------------

Week_16 2022.12.19

1. 期末作品目前成果

---------------------------------- github ----------------------------------