顯示具有 98160913黃培恩 標籤的文章。 顯示所有文章
顯示具有 98160913黃培恩 標籤的文章。 顯示所有文章

2013年1月14日 星期一

Week19,Final project


1.系統名稱
越吃越長貪食蛇

2.製作方式
用processing 結合arduino板 製作出一個簡易的貪食蛇遊戲

並設置4個按鈕 控制貪食蛇上下左右行走 讓自己越吃越長
隨心所欲愛吃什麼就吃什麼

3.圖片




 



















4.心得介紹
由於之前所做的跟其他組相似,所以全部都重新來過,所以我們做一個貪食蛇的遊戲
遊戲非常簡單,讓大家操作起來更得心應手也有趣,所以瞞開心的也蠻有成就感的yeah

5.影片

6.組員分工情況
我們的程式設計 還有配接電路加上所有的美觀美術都是大家一起分工合作完成的,非常和樂融融,開心萬分。

2012年12月27日 星期四

Week15.HW12

本周將銜接上禮拜的繼續增加按鈕操控的部分
本已大致安排好按鈕位置與功能鍵

但好像跟其他組類似 所以我們有意改做其他的
因為計畫敢不上變化 重新會導致整個作業將從零開始
所以我們也將斟酌情況 製作出遊戲
因為時間緊迫 若成果未如預期 敬請包含
我們將繼續加油 。

2012年12月4日 星期二

Week13, Hw11

1. 瑪莉有隻小綿羊


2.我們的厲害樂譜

3212333 222 355
3212333 22321

3345  5432  1123 322
3345  5432 1123 211

3. 程式碼
int buttonPin2 = 2;
int buttonPin3 = 3;
int buttonPin4 = 4;
int buttonPin5 = 5;
int buttonPin6 = 6;
int buttonState2 = 0;
int buttonState3 = 0; 
int buttonState4 = 0;
int buttonState5 = 0;
int buttonState6 = 0; 
void setup() {
  pinMode(buttonPin2, INPUT);
 pinMode(buttonPin3, INPUT);
 pinMode(buttonPin4, INPUT);
 pinMode(buttonPin5, INPUT);
 pinMode(buttonPin6, INPUT); 
  Serial.begin(9600);
}
void loop() {
  buttonState2 = digitalRead(buttonPin2);
  buttonState3= digitalRead(buttonPin3);
  buttonState4= digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);
  buttonState6 = digitalRead(buttonPin6);
  if (buttonState2 == HIGH) {    
    Serial.println("Start Playing");
   tone(8, 262, 10);
  }
  if (buttonState3 == HIGH) {    
    Serial.println("Start Playing");
   tone(8, 294, 10);
  }
  if (buttonState4 == HIGH) {    
    Serial.println("Start Playing");
   tone(8, 330, 10);
  }
  if (buttonState5 == HIGH) {    
    Serial.println("Start Playing");
   tone(8, 349, 10);
  }
  if (buttonState6 == HIGH) {    
    Serial.println("Start Playing");
   tone(8, 392, 10);
  }
}

4.這次的arduino我覺得超酷超有趣的,但是在接線時有點複雜,不過我們還是突破了,所以我們超有成就感,自己做出一座簡易鋼琴的感覺超妙的,讓我回憶起高中時作詞作曲的歲月,所以繼續加油吧 大家!

2012年11月27日 星期二

Week12, Hw10

1. 七彩霓虹燈影片
 
2. 我們做了持續閃爍的七彩霓虹燈

3. 程式碼
int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 7;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor
void setup() {
  Serial.begin(9600);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(1, OUTPUT);
}
void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  digitalWrite(7, HIGH);
  delay(100);
  digitalWrite(6, HIGH);
  delay(100);
   digitalWrite(5, HIGH);
  delay(100);
   digitalWrite(4, HIGH);
  delay(100);
   digitalWrite(3, HIGH);
  delay(100);
   digitalWrite(2, HIGH);
  delay(100);
   digitalWrite(1, HIGH);
  delay(100);

  digitalWrite(7, LOW);
  delay(100);
  digitalWrite(6, LOW);
  delay(100);
   digitalWrite(5, LOW);
  delay(100);
   digitalWrite(4, LOW);
  delay(100);
   digitalWrite(3, LOW);
  delay(100);
   digitalWrite(2, LOW);
  delay(100);
   digitalWrite(1, LOW);
  delay(100);

  delay(50);                 
}

4. 心得
今天的七彩霓虹燈非常有趣,感謝森哥的照料與支持,我們將會更加茁壯努力再出發!

2012年11月20日 星期二

HW09,Week11

01.思考可以用Arduino做些什麼?

1.可以做一個簡易的機器人,利用操控做一些簡易的技能
2.做一個簡易的跳棋小遊戲,用led透過arduino來模擬遊戲情況


02.貼一個Arduino應用的影片



03你可能用Arduino想做什麼

我想利用Arduino做一個簡易LED的字幕跑馬燈,因為目前對Arduino尚未熟悉,想一步一步讓自己更了解再做出更多元有趣的遊戲或系統。

心得
Arduino這個新工具,可以讓使用者設計出的遊戲或系統更有趣與更多元,非常的吸引我,雖然第一次接觸這個陌生的東西,有點害怕 ,但還是希望能在這個範疇學到更多,使自己能力更加提升。

2012年11月12日 星期一

Midtern


我們的期中小遊戲是踩地雷,也就是大家熟悉的踩地雷遊戲。
接著下面會有我們的程式碼、遊戲顯示視窗以及玩法介紹與demo影片。

 1.由於踩地雷週圍有幾個地雷的顯示數字,對於我們來說有困難點須突破,最後終於突破了。整體踩地雷配合已撰寫計時功能與預設炸彈數、restart功能鍵與良好的操作介面、悅耳的背景音樂,以完成我們的期中小遊戲踩地雷。

程式碼 :

import ddf.minim.*;
  Minim minim;
  AudioPlayer player;
public void setup() {
  size(400, 400);
  loop();
  stroke(0);
  fill(0);
  textSize(50);
  minim = new Minim(this);
  player =minim.loadFile("two.mp3");
  player.play();
  dx = width/col;
  dy = (height - GUIOffset)/row;
  mines = new Field[col][row];
  minesLeft = amountOfMines;
  fieldsRevealed = 0;
  timeCounter = -1;
  timeHelp = 0;
  populate();

}
public void draw() {
  background(167,250,250);
  drawGUI();
  drawField();
}
class Field {
  private int mineCount;
  private boolean mine;
  private boolean hidden;
  private boolean marked;
  public Field() {
    mineCount = 0;
    mine = false;
    hidden = true;
    marked = false;
  }
  int getMineCount() {
    return mineCount;
  }
  void raiseMineCount() {
    mineCount++;
  }
  boolean isMine() {
    return mine;
  }
  void setMine() {
    mine = true;
  }
  boolean isHidden() {
    return hidden;
  }
  void reveal() {
    hidden = false;
    marked = false;
  }
  boolean isMarked() {
    return marked;
  }
  void toggleMark() {
    marked = !marked;
  }
}
final int col =6;
final int row =6;
final int amountOfMines = 5;
final int GUIOffset = 100;
int minesLeft;
int fieldsRevealed;
float dx;
float dy;
Field[][] mines;
  for (int i = 0; i < a; i++) {
    int v = minePositions[i];
    int c = v%col;
    int r = v/row;
    if (c > 0 && r > 0) mines[c - 1][r - 1].raiseMineCount();
    if (r > 0) mines[c][r - 1].raiseMineCount();
    if (c < col - 1 && r > 0) mines[c + 1][r - 1].raiseMineCount()
    if (c > 0) mines[c - 1][r].raiseMineCount();
    mines[c][r].setMine();
    if (c < col - 1) mines[c + 1][r].raiseMineCount();
    if (c > 0 && r < row - 1) mines[c - 1][r + 1].raiseMineCount();
    if (r < row - 1) mines[c][r + 1].raiseMineCount();
    if (c < col - 1 && r < row - 1) mines[c + 1][r + 1].raiseMineCount();
  }
}
int timeCounter;//時間
int timeHelp;
void drawGUI() {
  fill(0);
  for (int i = 0; i < width; i += dx) {
    line(i, GUIOffset, i, height);
  }
  for (int i = GUIOffset; i < height; i += dy) {
    line(0, i, width, i);
  }
  int s = second();
  if (s != timeHelp) {
    timeCounter++;
    timeHelp = s;
  }
  String seconds = Integer.toString(timeCounter);
  if (seconds.length() == 1) {
    seconds = "00" + seconds;
  }
  else if (seconds.length() == 2) {
    seconds = "0" + seconds;
  }
  else if (seconds.length() < 3) {
    seconds = "999";
  }
  textSize(50);
  text(seconds, 10, 50);             //計時位置
  text(minesLeft, width - 50, 50);   //炸彈個數位置
  fill(255);
  noStroke();
  ellipse(width/2+5, 33, 70, 70);//r的格子
  fill(0);
  text("R", width/2 - 10, 50);
}
void highlight(float x, float y) {
  fill(255, 0, 0);
  y -= GUIOffset;
  if (x/dx >= col || y/dy >= row || y < 0) {
    return;
  }
  Float iF = x/dx;
  Float jF = y/dy;
  int i = iF.intValue();
int j = jF.intValue();
  rect(i * dx, j * dy + GUIOffset, dx, dy);
}
void reveal(float x, float y) {
  float yRel = y - GUIOffset;
  Float iF = x/dx;
  Float jF = yRel/dy;
  int i = iF.intValue();
  int j = jF.intValue();
  if (i < 0 || yRel < 0 || i >= col || j >= row ) {
   return;
  }
  if (!mines[j][i].isHidden()) {
    return;
  }
  if (mines[j][i].isMarked()) {
    minesLeft++;
  }
  mines[j][i].reveal();
  fieldsRevealed++;
  if (fieldsRevealed == col*row - amountOfMines) {        
    win();
  }
  if (mines[j][i].isMine()) {
    gameOver();
void toggleMark(float x, float y) {
  float yRel = y - GUIOffset;
  Float iF = x/dx;
  Float jF = yRel/dy;
  int i = iF.intValue();
  int j = jF.intValue();
if (i < 0 || yRel < 0 || i >= col || j >= row) {
    return;
  }
  if (mines[j][i].isHidden()) {
    if (mines[j][i].isMarked()) {
      mines[j][i].toggleMark();
      minesLeft++;
    }
    else {
      mines[j][i].toggleMark();
      minesLeft--;
} }}
void gameOver() {
  noLoop();
  draw();
  textSize(50);
  fill(55, 200, 30);
  text("ARE YUU OKAY!",20, 180);
}
void win() {
  for (int i = 0; i < col; i++) {
    for (int j = 0; j < row; j++) {
      if (mines[i][j].isHidden() && !mines[i][j].isMarked()) {
        mines[i][j].toggleMark();
      }}}
  minesLeft = 0;
  noLoop();
  draw();
  textSize(50);
  fill(255,135, 80);
  text("CHAMPION!", 20, 200);
}
void reset() {
  setup();
}
public void mousePressed() {
  if (mouseButton == LEFT) {
    reveal(mouseX, mouseY);
  if (mouseX > width/2 - 25 && mouseX < width/2 + 25 && mouseY > 10 && mouseY < 60) {
      reset();
    }}
else if (mouseButton == RIGHT) {
toggleMark(mouseX, mouseY);
  }
}


2.遊戲顯示

此畫面為一開始的遊戲顯示視窗。
一啟動遊戲,即有悅耳的背景音樂相襯。
畫面方塊為6*6的選擇方塊,可供玩家選擇。
1.畫面左上方,為時間計時功能,採累加的方式計時。
2.畫面右上方,為預設炸彈數,顯示6*6方塊中共有5個預設炸彈。
3.畫面中間上方的R鍵,玩家可以依喜好重新啟動遊戲,開啟新局。
此時,時間會重新計時,而炸彈個數不變,背景音樂也持續播放。


 遊戲失敗顯示
1.圖中的紅色同心圓圖形,即為我們所設的預設炸彈。
當按到時,即表示遊戲失敗。
2.失敗時,左上方計時器將停止,秒數為按到炸彈時間。
3.畫面中央會顯示粗體綠字的ARE YOU OKAY! 的字樣。
遊戲過關顯示
1.圖中 "- ",表是炸彈位置。
2.過關時,左上方計時器將停止,秒數為過關時間。
3.右上方炸彈個數會顯示為0個。
4.遊戲過關,會在中央顯示粗體橘字CHAMPION!的字樣。

希望大家玩得愉快
以下是我們完整DEMO影片




2012年10月30日 星期二

week08,hw08

1. 請寫下以下資料:
1.1. 你之前完成了什麼?
之前完成了
1.時間計時的功能
2.炸彈設置個數功能
3.版面大致格式與計畫

1.2. 你今天計畫要做什麼?
1.版面美化
2.成功與失敗提示語
3.簡單可以跑的只有1個炸彈
4.重新restart功能鍵(R)
5.假設炸彈設定


1.3. 可能會遇到的問題... (及可能的解決方法)
1.炸彈隨機的問題
利用具有random的函示來解決

2.提示周圍炸彈個數
已有借書,想透過書上的既定程式語法
將其函式轉換到processing可以應用 加油!

3.音樂放置仍有疑問
下次前一定要突破


2. 請把你目前期中作品的進度貼出來
 
 

目前完成進度
1.版面美化完成
2.預設炸彈完成
3.可放置炸彈
4.RESTART鍵功能OK
5.輸跟贏 視窗顯示語 OK
6.計時功能更新 OK

心得
今天做了不少功能,踩地雷大致也有個樣子了
不過還有幾個功能需要突破,希望挑戰可以一一迎刃而解,加油!





2012年10月23日 星期二

Week07.Hw07


目前進度
1.先把主要介面做出來,設想是6*6的格子可以按,但初步只做出介面,還不能按。

2.在左側上方有計時的功能,目前設定為3位數 ,已可工作。

3 中間的r 想要表示可以重新也就是restart的功能 ,可以重新玩,目前只是概念上放上一個cube。

4.圖右側上方,是想要呈現目前遊戲得炸彈數,此功能鍵還沒完成。

5.主要介面形式, 大概都有初步雛形 就差一步一步完成各個功能鍵的程式碼。

6.下次目標把炸彈跟RESTART功能鍵完成,下方6*6格子可以按。

二、視訊

2012年10月16日 星期二

wk06,hw06

TODO: HW06第一部分: "寫"作品建議, 讚美、寫賣點

潘瀅玉那組我覺得非常有創意,很有趣讓我很想玩
而且也很有深度,具備強勁的挑戰性,
簡單的色彩與工具創造不平凡的遊戲
非常有亮點,若可著手寫成app,必定是一大賣點




TODO: HW06第二部分: 今天的進度: 做期中作品

素材;
炸彈、按鈕、音樂與一些基本圖示
我們有在規劃做成9*9的圖案方塊 共81格可供選擇
並打算以初級程度來放置炸彈,大約10顆
然後音樂部分也找到初步想要的素材


想流程,很細地寫下步驟

遊戲時,總會遇到不同的炸彈配置及數字模式。如想快速過關,通常得先找出簡易的數字配置,接著再處理不確定的部份。


心得
本周上課主要在製作自己的夢想遊戲,我還有許多疑問與觀念,需要釐清
接下來我也會多花點時間在這上面,希望自己的遊戲程式能很快地有一些初步成果
也期待在一點一滴的累積下,processing功力會有長足的成長。 加油!

2012年10月9日 星期二

Week05,hw05

1.自己轉動




void setup()           {
size(600,600);
}
float angle=0.01;
void draw()            {
 
translate(300,300);
rotate(angle);
angle+=0.01;
for(int i=0;i<36;i++)  {
rotate( PI/18);
ellipse(85,0,200,60);
{
fill(225,30,60);
ellipse(300,100,50,50);}
{
fill(225,230,60);
ellipse(250,50,50,50);}
}
fill(30,60,90);
ellipse(0,0,70,70);
}

2.鳳凰花跟著滑鼠動
void setup()           {
size(600,600);
}
float angle=0.01;
void draw()            {
 
translate(mouseX,mouseY);
rotate(angle);
angle+=0.01;
for(int i=0;i<36;i++)  {
rotate( PI/18);
ellipse(85,0,200,60);
{
fill(225,30,60);
ellipse(300,100,50,50);}
{
fill(225,230,60);
ellipse(250,50,50,50);}
}
fill(30,60,90);
ellipse(0,0,70,70);
}

3.夢想

1.我想要做個看似簡單卻很有趣的踩地雷遊戲
裡面需要簡單的圖片 還有背景
還有滑鼠事件的按鈕與翻轉與功能
並且有計時功能與顯示炸彈個數
而且還有replay的功能
配合多元緊湊的音樂 讓玩家更融入於遊戲中
進而得到所謂 真正的快樂!

2012年10月2日 星期二

week04.HW04

void setup()
{
background(55,155,25);
size(500,400);
stroke(0,0,0);
strokeWeight(1);
fill(255,0,0);
rect(0,0,50,50);
fill(0,255,0);
rect(0,50,50,50);
fill(0,0,255);
rect(0,100,50,50);
fill(0,0,0);
rect(0,150,50,50);
fill(255,255,255);
rect(0,200,50,50);
rect(450,0,50,50);
fill(0,0,0);
text("eraser", 460,30);
fill(255, 255, 255);
rect(450,50,50,50);
ellipse(475,75,1,1);
rect(450,100,50,50);
ellipse(475,125,5,5);
rect(450,150,50,50);
ellipse(475,175,10,10);
rect(450,200,50,50);
fill(0,0,0);
text("Clear", 460,230);
fill(255,255,255);
rect(450,250,50,50);
fill(0,0,0);
text("Save", 460,280);
}
void draw()
{
if(mouseX<50 && mouseY <50 && mousePressed)
{
stroke(255,0,0);
}
else if(mouseX<50 && mouseY <100 && mousePressed)
{
stroke(0,255,0);
}
else if(mouseX<50 && mouseY <150 && mousePressed)
{
stroke(0,0,255);
}
else if(mouseX<50 && mouseY <200 && mousePressed)
{
stroke(0,0,0);
}
else if(mouseX<50 && mouseY <250 && mousePressed)
{
stroke(255,255,255);
}
else if(mouseX>450 && mouseY <50 && mousePressed)
{
stroke(255,255,255);
}
else if(mouseX>450 && mouseY <100 && mousePressed)
{
strokeWeight(1);
}
else if(mouseX>450 && mouseY <150 && mousePressed)
{
strokeWeight(5);
}
else if(mouseX>450 && mouseY <200 && mousePressed)
{
strokeWeight(10);
}
else if(mouseX>450 && mouseY <250 && mousePressed)
{
setup();
}
else if(mouseX>450 && mouseY <300 && mousePressed)
{
save("1.jpg");
}
else if(mousePressed)
{
line(mouseX,mouseY,pmouseX,pmouseY);
}
}

2.心得
這次的還蠻有趣的,用自己設計的小畫家畫圖,超有成就感,感覺自己好像有點樣子了
好像很厲害一樣,期待下周的課程,能學到更多更精彩的東西!

2012年9月25日 星期二

Week03, HW03

1.
老鼠


void setup(){
  size(600,600);
  background(166,255,255);
}

void draw(){

fill(0,0,0);
rect(mouseX-5,mouseY,10,10);
rect(mouseX+5,mouseY,10,10);

fill(128,128,128);
ellipse(mouseX,mouseY,50,50);
fill(128,128,150);
ellipse(mouseX+30,mouseY-20,30,30);

fill(128,128,150);
ellipse(mouseX-30,mouseY-20,30,30);

fill(0,0,0);
ellipse(mouseX-10,mouseY-10,10,10);
fill(0,0,0);
ellipse(mouseX+10,mouseY-10,10,10);

fill(255,255,255);
rect(mouseX-2,mouseY+10,5,7);
rect(mouseX+2,mouseY+10,5,7);

}

2.
老鼠追一串蕉



void setup(){
  size(600,600);
  //frameRate(1);
}
float x=100,y=100;
void draw(){
  background(25,225,30);

  fill(255,255,38);

  ellipse(mouseX+5,mouseY+30,10,50);
  ellipse(mouseX+12,mouseY+30,10,50);
  ellipse(mouseX+19,mouseY+30,10,50);
  ellipse(mouseX+26,mouseY+30,10,50);
  ellipse(mouseX+33,mouseY+30,10,50);
  ellipse(mouseX+40,mouseY+30,10,50);
  ellipse(mouseX+47,mouseY+30,10,50);
  
  fill(64,0,0);
   rect(mouseX,mouseY,50,10);


translate(x,y);
  fill(128,128,128);
ellipse(0,0,50,50);
fill(128,128,150);
ellipse(+30,-20,30,30);

fill(128,128,150);
ellipse(-30,-20,30,30);

fill(0,0,0);
ellipse(-10,-10,10,10);
fill(0,0,0);
ellipse(+10,-10,10,10);

fill(255,255,255);
rect(-2,+10,5,7);
rect(+2,+10,5,7);
 
  x=x*0.9 + mouseX*0.1;
  y=y*0.9 + mouseY*0.1;
}


心得 今天得更有趣了,有漸漸感受到互動技術的厲害了,不過我還需要加強繪圖技術,如此一來 
學到更多更新的互動技術,也不至於徬徨,更能發揮得當!

2012年9月18日 星期二

Week02,HW02,畫圖

1.


size(600,600);
for( int i=0;i<50 data-blogger-escaped-i="i" data-blogger-escaped-span="span" style="color: #cc6600;">fill
(random(255),random(255),random(255)); rect(random(400),random(400),random(150),random(100)); }

2.


 
size(800,600);
noStroke();
for( int i=0;i<80 data-blogger-escaped-i="i" data-blogger-escaped-nbsp="nbsp" data-blogger-escaped-span="span" style="color: #cc6600;">for
( int k=0;k<60 data-blogger-escaped-k="k" data-blogger-escaped-span="span" style="color: #cc6600;">fill(i*255/70,k*255/60,0); rect(i*10,k*10,10,10); }}
3.天啊 好多眼睛


background(60,70,200);
size(400,300);
noStroke();
for( int i=0;i<8;i++)
{ for( int k=0;k<6;k++)
{fill(i*255/3,k*255/4,0);
ellipse(i*100+50,k*100+50,100,100);
fill(i*255/1,k*255/1,255);
ellipse(i*100+50,k*100+50,100,50);
fill(i*255/12,k*255/7,0);
ellipse(i*100+50,k*100+50,50,50);
}}

4.心得
今天學的比較簡單,也讓我學起來更能熟能生巧,也期待能學習更多的指令,讓作業能更加多元與豐富,相對的成就感也油然而生,非常期待下次的上課啊!!!

2012年9月11日 星期二

Week 01 HW01

1.

2.
size(500,500);
PImage kitty;
kitty=loadImage
("http://www.zhongman.com/UploadFiles/Authorized/2012/7/201207261013441973.jpg");
image(kitty,20,20);


3. 原圖

  processing+小畫家

4.心得
還不太熟悉,都慢慢摸索,點也很難對,不過很有成就感
但跟之前所學的程式相比,相對簡單,希望繼續加油更上層樓。