ãšã³ããªãŒ
æ¥ã®å
ã®äžã§ããããŠå€¢ã®äžã§ãç§ã¯èªåã§èŠå¶ããããã¬ãã®ã»ãããããããã¯ã¹ãäœæãããšããã¢ã€ãã¢ãæãã€ããŸããã å®éãåœæãè±ãã§é£œåããç¡ç·å·¥åŠã®äžçãç§ã®åã«éãããŸããã 以åã¯é»åæ©åšã®æ¬æ Œçãªéçºã«åãçµãã§ããªãã£ããããç§ã®éžæã¯ããã·ã³ãã«ãªãªãã·ã§ã³
-Arduinoãšãã®æãäžè¬çãªã¢ãã«
-Unoã§ããã
äœæ¥èšç»1.ã©ã€ãã©ãªãæ±ã
2.ãããªåºåããŒããã¯ãã ä»ãããŸã
3.ã³ãŒããæžã
4.äœãåãé¡äŒŒã®ãããžã§ã¯ãã®å Žåãæçµçãªå€éšã³ã³ããŒãã³ãã¯ç¹ã«éèŠã§ã¯ãããŸããã
ã¹ããã1.äœãäœã§ããããçè§£ãã
æ°ååã®å¿
æ»ã®ã°ãŒã°ã«æ€çŽ¢ã®åŸãç§ã¯
ãã³ãã£åã®ãã¬ãã£ãã¯ã¹ã§ãäœæã§ããªããšããçµè«ã«éããŸããã ãŸããç§ã¯äœãã§ãããç§ã¯ãããåã£ãåŸãç§ã¯åé¡ãçµäºããŸãã
Arduinoãšã©ãžãªãšã¬ã¯ãããã¯ã¹å
šè¬ ïŒåºåã§ã¯ãªãïŒã®
ãããžã§ã¯ãå°çšã®
ãµã€ãã§ ããã®ãããªåãçµã¿ã«é¢ããèšäºãèŠã€ããŸããã ãã¬ãã£ãã¯ã¹ãTV-shnayaã§ããããã
TVoutã©ã€ãã©ãªã䜿çšããããšã決å®ãããŸããã ãã®èšçœ®ãšæäœã®ããã«ãç§ã¯å°ãã·ã£ãŒãã³ãããªããã°ãªããŸããã§ããã
å¿
èŠãªã©ã€ãã©ãªé¢æ°ã¢ãŒãèšå®æ©èœ
beginïŒïŒé¢æ°ã¯ããããªåºåãåæåããŸãïŒããã©ã«ãã®ç»é¢è§£å床ã¯128x96ã§ãïŒã
æ§æïŒ
TVOut.beginïŒã¢ãŒãïŒ;
TVOut.beginïŒã¢ãŒããxãyïŒ;
ãã©ã¡ãŒã¿ïŒ
ã¢ãŒã-ãããªä¿¡å·æšæºïŒ
_PAL-PALã¢ãŒãã
_NTSC-NTSCã¢ãŒãã
æ»ãå€ïŒ
0-æ¥ç¶ã«æåããå Žåã4-倱æããå ŽåïŒåºåãããã¡ã«ååãªã¡ã¢ãªããããŸããïŒã
é
å»¶æ©èœ
delayïŒïŒé¢æ°ã¯ãåºåç»åãé
å»¶ãããŸãã
æ§æïŒ
TVOut.delayïŒmsïŒ;
ãã©ã¡ãŒã¿ïŒ
ms-æ£ç¢ºãªé
å»¶ïŒmsåäœïŒïŒPALã§ã¯20 msãNTSCã§ã¯16 msã
delay_frameïŒïŒé¢æ°ã¯ãåºåã€ã¡ãŒãžãé
å»¶ãããŸãã
æ§æïŒ
TVOut.delay_frameïŒãã¬ãŒã ïŒ;
ãã©ã¡ãŒã¿ïŒ
ãã¬ãŒã -é
å»¶ããããã¬ãŒã ã®æ°...
ãã®æ©èœã¯ãç»é¢ã®æŽæ°ã«ããç»é¢ã®ã¡ãã€ããæå°éã«æããããè§£æ¶ããã®ã«åœ¹ç«ã¡ãŸãã
ãã©ã¡ãŒã¿é¢æ°
hresïŒïŒé¢æ°ã¯ãç»é¢ã®æ°Žå¹³è§£å床ãè¿ããŸãã
æ§æïŒ
TVOut.hresïŒïŒ;
ãã©ã¡ãŒã¿ïŒ
ãã
æ»ãå€ïŒ
unsigned char-æ°Žå¹³ã¹ã¯ãªãŒã³è§£å床ã
vresïŒïŒé¢æ°ã¯ãç»é¢ã®åçŽè§£å床ãè¿ããŸãã
æ§æïŒ
TVOut.vresïŒïŒ;
ãã©ã¡ãŒã¿ïŒ
ãã
æ»ãå€ïŒ
unsigned char-åçŽç»é¢è§£å床ã
char_lineïŒïŒé¢æ°ã¯ãããã¹ãæ
å ±ã衚瀺ãããšãã«ãè¡ããšã«å¯èœãªæå€§æåæ°ãè¿ããŸãã
æ§æïŒ
TVOutã char_lineïŒïŒ;
ãã©ã¡ãŒã¿ïŒ
ãã
æ»ãå€ïŒ
unsigned char-æåæ°ã
åºæ¬çãªã°ã©ãã£ãã¯æ©èœ
set_pixelïŒïŒé¢æ°ã¯ãæå®ããã座æšãæã€ãã€ã³ãã§ç»é¢ãã¯ã»ã«ã®è²ãèšå®ããŸãã
æ§æïŒ
TVOut.set_pixelïŒxãyãcolorïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-ãã¯ã»ã«åº§æšã
è²-ãã¯ã»ã«ã®è²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
get_pixelïŒïŒé¢æ°ã¯ãæå®ããã座æšãæã€ãã€ã³ãããç»é¢ãã¯ã»ã«ã®è²ãååŸããŸãã
æ§æïŒ
TVOut.get_pixelïŒxãyïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-ãã¯ã»ã«åº§æšã
æ»ãå€ïŒ
è²-ãã¯ã»ã«ã®è²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
fillïŒïŒé¢æ°ã¯ãæå®ãããè²ã§ç»é¢ãå¡ãã€ã¶ããŸãã
æ§æïŒ
TVOut.fillïŒè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
è²-å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
clear_screenïŒïŒé¢æ°ã¯ç»é¢ãã¯ãªã¢ããæå®ãããè²ã§å¡ãã€ã¶ããŸãã
æ§æïŒ
TVOut.clear_screenïŒè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
è²-å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
invertïŒïŒé¢æ°ã¯ãç»é¢ã®å
容ãå転ããŸãã
æ§æïŒ
TVOut.invertïŒïŒ;
ãã©ã¡ãŒã¿ïŒ
ãã
shift_directionïŒïŒé¢æ°ã¯ãç»é¢ã®ã³ã³ãã³ããç§»åããŸãã
æ§æïŒ
TVOut.shift_directionïŒè·é¢ãæ¹åïŒ;
ãã©ã¡ãŒã¿ïŒ
distance-ç»é¢ã³ã³ãã³ããã·ããããè·é¢ã
æ¹å-ã·ããæ¹åïŒ
UP = 0-ã¢ãã;
DOWN = 1-ããŠã³;
LEFT = 2-å·Šãžã
RIGHT = 3-å³åŽã
draw_lineïŒïŒé¢æ°ã¯ãç»é¢äžã®2ç¹ãç·ã§æ¥ç¶ããŸãã
æ§æïŒ
TVOut.draw_lineïŒx0ãy0ãx1ãy1ãè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
x0ãy0-æåã®ç¹ã®åº§æšã
x1ãy1-2çªç®ã®ãã€ã³ãã®åº§æšã
è²-å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
draw_rowïŒïŒé¢æ°ã¯ãã©ã€ã³ã®2ã€ã®ãã€ã³ãéã®æå®ãããè²ã§ã©ã€ã³ãå¡ãã€ã¶ããŸãã
æ§æïŒ
TVOut.draw_rowïŒè¡ãx0ãx1ãè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
row-ç·ã®åçŽåº§æšã
x1ãx2-ã©ã€ã³ãã€ã³ãã®æ°Žå¹³åº§æšã
è²-å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
draw_columnïŒïŒé¢æ°ã¯ãåã®2ã€ã®ãã€ã³ãã®éã§æå®ãããè²ã§è¡ãå¡ãã€ã¶ããŸãã
æ§æïŒ
TVOut.draw_columnïŒåãy0ãy1ãè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
column-åã®æ°Žå¹³åº§æšã
y1ãy2-åå
ã®ãã€ã³ãã®åçŽåº§æšã
è²-å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
draw_rectïŒïŒé¢æ°ã¯ãç»é¢äžã«é·æ¹åœ¢ãæç»ããŸãã
æ§æïŒ
TVOut.draw_rectïŒxãyãwãhãè²ïŒ;
TVOut.draw_rectïŒxãyãwãhãcolorãfillcolorïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-å·Šäžã®ç¹ã®åº§æšã
wãh-æãããé·æ¹åœ¢ã®å¹
ãšé«ãã
color-é·æ¹åœ¢ã®å¢çç·ã®è²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
fillcolor-é·æ¹åœ¢ã®å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
draw_circleïŒïŒé¢æ°ã¯ãç»é¢äžã«åãæããŸãã
æ§æïŒ
TVOut.draw_ circleïŒxãyãrãè²ïŒ;
TVOut.draw_ circleïŒxãyãrãè²ãå¡ãã€ã¶ãè²ïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-åã®äžå¿ã®åº§æšã
rã¯åã®ååŸã§ãã
è²-åã®å¢çç·ã®è²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
fillcolor-åã®å¡ãã€ã¶ãè²ïŒ
0-é»;
1-çœ;
2-è²ãå転ããŸãã
ããããããïŒïŒé¢æ°ã¯ããããããã衚瀺ããŸãã
æ§æïŒ
TVOut.bitmapïŒxãyãbmpãwãhïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-åºåãã€ã³ãã®å·Šäžé
ã®åº§æšã
bmp-ç»åãä¿åãããŠããã¡ã¢ãªé
åãžã®ãã€ã³ã¿ã
wãh-衚瀺ç»åã®å¹
ãé«ã;
以äžã§ã¯ãåºåã©ã¹ã¿ãŒã€ã¡ãŒãžã®ã³ãŒããäœæããããã»ã¹ãæ€èšããŸãã
ããã¹ãåºå颿°
ããã¹ãæ
å ±ãåºåããæ©èœã䜿çšããã«ã¯ãã©ã€ãã©ãªã«å«ãŸããã«ã¹ã¿ã ãã©ã³ãã§ãã¡ã€ã«ãæ¥ç¶ããå¿
èŠããããŸãã ã«ã¹ã¿ã ãã©ã³ãã»ãããæ¥ç¶ããã«ã¯ãã¹ã±ããå
ã®ããããŒãã¡ã€ã«ãæ¥ç¶ããå¿
èŠããããŸãã
#include
ã©ã€ãã©ãªã«ã¯ã次ã®ãã©ã³ãã»ãããå«ãŸããŠããŸãã
font4x6;
font6x8;
font8x8;
font8x8extã
select_fontïŒïŒé¢æ°ã¯ãããã¹ãæ
å ±ã衚瀺ããããã®ãã©ã³ããéžæããŸãã
æ§æïŒ
TVOut.select_fontïŒãã©ã³ãïŒ;
ãã©ã¡ãŒã¿ïŒ
font-ã¹ã±ããã«æ¥ç¶ãããŠãããã©ã³ãã
print_charïŒïŒé¢æ°ã¯ãç»é¢ã«æåã衚瀺ããŸãã
æ§æïŒ
TVOut.print_charïŒxãyãcharïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-æåã衚瀺ããç»é¢äžã®äœçœ®ã
charã¯ãçŸåšã®ãã©ã³ãã®æåã§ãã
set_cursorïŒïŒé¢æ°ã¯ãç»é¢ã«ããã¹ãæ
å ±ã衚瀺ããããã®ã«ãŒãœã«äœçœ®ãèšå®ããŸãã
æ§æïŒ
TVOut.set_cursorïŒxãyïŒ;
ãã©ã¡ãŒã¿ïŒ
xãy-ã«ãŒãœã«ã®åº§æšã
printïŒïŒé¢æ°ã¯ãæååãæåããŸãã¯æ°åã衚瀺ããŸãã
æ§æïŒ
TVOut.printïŒxãyãstringïŒ;
TVOut.printïŒxãyãcharãbaseïŒ;
TVOut.printïŒxãyãintãbaseïŒã
ãã©ã¡ãŒã¿ïŒ
xãyã¯ã«ãŒãœã«ã®åº§æšã§ãã
base-åºå圢åŒïŒ
ãã€ã= 0;
DEC = 10ïŒããã©ã«ãïŒ;
HEX = 16ã
printlnïŒïŒé¢æ°ã¯ãæååãæåããŸãã¯æ°åã衚瀺ããæåŸã«æ¹è¡æåã衚瀺ããŸãïŒ
æ§æïŒ
TVOut.printlnïŒxãyãstringïŒ;
TVOut.printlnïŒxãyãcharãbaseïŒ;
TVOut.printlnïŒxãyãintãbaseïŒã
ãã©ã¡ãŒã¿ïŒ
xãyã¯ã«ãŒãœã«ã®åº§æšã§ãã
base-åºå圢åŒïŒ
ãã€ã= 0;
DEC = 10ïŒããã©ã«ãïŒ;
HEX = 16ã
ãªãŒãã£ãªåºåæ©èœ
ãªãŒãã£ãªåºåæ©èœã䜿çšãããšããªãŒãã£ãªåºåãä»ããŠç¹å®ã®åšæ³¢æ°ä¿¡å·ããã¬ãã«éä¿¡ã§ããŸãã
toneïŒïŒé¢æ°ã¯ãç¹å®ã®åšæ³¢æ°ã®ãªãŒãã£ãªä¿¡å·ãåºåããŸãã
æ§æïŒ
TVOut.toneïŒé »åºŠãç¶ç¶æéïŒ;
TVOut.toneïŒåšæ³¢æ°ïŒã
ãã©ã¡ãŒã¿ïŒ
frequency-ãªãŒãã£ãªä¿¡å·ã®åšæ³¢æ°ã
duration-ä¿¡å·ã®æç¶æéã
noToneïŒïŒé¢æ°ã¯ ããªãŒãã£ãªä¿¡å·ã®åºåã忢ããŸãã
æ§æïŒ
TVOut.noToneïŒïŒã
ã¹ããã2.ãããªåºåãã¯ãã ä»ããã
ãŸããã³ã³ããžããav-outïŒRCAïŒãä»ããŠãããªä¿¡å·ãåºåããããã«ç¹å®ã®ããŒããã¯ãã ä»ãããå¿
èŠããããŸãã 以äžã®ã¹ããŒã ã«åŸã£ãŠã¯ãã ä»ãããŸãã

å
¬ç§°å€470ãªãŒã ãš1 kãªãŒã ã®2ã€ã®æµæãäºãã«å¹³è¡ã«é
眮ããã±ãŒãã«ãã¥ãŒãªããããããã©ã¹ããã¯ãã ä»ãããŸãã æ¬¡ã«ã470ãªãŒã ã®æµæããArduinoã®7çªç®ã®ãã³ã«ã¯ã€ã€ãå²ãåœãŠãŸãã 圌ã¯ãããªïŒ
video ïŒã®åºåãæ
åœããåæïŒ
sync ïŒãæ
åœããŠããããã1 kãªãŒã ã®æµæãã9çªç®ã®ãã³ã«ã¯ã€ã€ãæ¥ç¶ããŸãã ãããŠãã±ãŒãã«ãã¥ãŒãªããããArduinoã®ãå°é¢ããžã®ããã€ãã¹ãã 詳现ã¯
ãã¡ã ãã¹ããã3.ã³ãŒããèšè¿°ããŸãïŒã²ãŒã ïŒ
æ¥ç¶æ¹æ³ã«ã€ããŠã¯èª¬æããŸãããå¿
èŠãªæ
å ±ã¯ãã€ãã®ããã«ã€ã³ã¿ãŒãããäžã§èŠã€ããããã§ãã èŠã€ããã®ãéåžžã«é£ãããããŸã£ãããªããã®ã説æããŠããŸãã
ããããç»é¢ããéå§ã
ãŸã ã ããããããã§åœŒã¯éèŠãªè³ªåã«åºäŒããŸãããã®å¥è·¡ãšã¯äœã§ããããïŒ ç§ã¯é ããããããŠã-Shimoãæãã€ããã äžåœèªã§ã¯ãã¡ãããæè¡çã«ãé«åºŠã«èãããŸãããããã¯åé¡ã§ã¯ãããŸããã
次ã«ãã²ãŒã èªäœã«æ»ããŸãã ãããŠåã³é£ãã質åïŒã©ããªã²ãŒã ãããã®ãïŒ ç§ã¯ããŸãå€åã§å€åã§ã¯ãªããåå¿è
ã§ãããã®ã§ã
ãã³ãã³ãæžãããšã«ããŸããã

å§ããŸãã
TV.draw_lineïŒ60,0,60,96,1ïŒã䜿çšããŠãç»é¢ã®äžå€®ã«ç·ãåŒã
ãŸãã ã ç»é¢ã®äžå€®ã«ããŒã«ãæ£ç¢ºã«è¡šç€ºãããŸãã ãã®ã¢ãŒã·ã§ã³
void ballmoveïŒint velãint angleïŒã®é¢æ°ãæžããŸãã
TV.set_pixelïŒxãyã1ïŒã䜿çšããŠã€ã³ã¹ããŒã«ã
ãŸãã ã倿°ãåŒã³åºããŸããã
次ã«ãããŒã«ãæäœããåã«ãç»é¢ã®æŽæ°ãåŠæ¹ããŸããã€ãŸããããŒã«ãç»é¢äžã§ãç¶æ¿ããããªãããã«ã次ã®äœçœ®ã«ç§»åãããšãã¯ãåã®äœçœ®ãé»ã§å¡ãã€ã¶ãå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
TV.set_pixelïŒxãyã0ïŒãç»é²ããå¿
èŠããã
ãŸãã ã 倿°åº§æšã®ãã¹ãŠã®å€æŽåŸãäœçœ®èšå®ãšããããªé
å»¶ãç»é²ããå¿
èŠããããŸã
-TV.delayïŒ50ïŒ; ã ãã®ãããªããšãèµ·ããã¯ãã§ãïŒ
void ballmove(int vel, int angle) { TV.set_pixel(x,y,0);
次ã«ã座æšã®å€æŽã«ã€ããŠèª¬æããŸãã 8æ¹åïŒ1ã8ïŒãå¯å€
intè§åºŠã®ã¿ ã å転ã«å¿ããŠã倿°ã«
int velocityã®äžéšãæžç®ãŸãã¯è¿œå ããããšã¯æ¢ã«ç°¡åã§ãã ç§ã¯ããã奜ãã§ããïŒ
if(angle == 1) { y -= vel; } if(angle == 3) { x += vel; } if(angle == 5) { y += vel; } if(angle == 7) { x -= vel; } if(angle == 2) { x += round(vel/2); y -= round(vel/2); } if(angle == 4) { x += round(vel/2); y += round(vel/2); } if(angle == 6) { x -= round(vel/2); y += round(vel/2); } if(angle == 8) { x -= round(vel/2); y -= round(vel/2); }
ããã§ã©ã±ãããåããŸãã ããã«éèŠãªèª¬æããããŸã
-xã«æ²¿ã£ãã©ã±ããã®äœçœ®ã¯å€ãããªãããã
yã«æ²¿ã£ã座æšã®ã¿ã䜿çšããŸããã æ¬¡ã®é¢æ°
void racketsmoveïŒïŒãèšè¿°ããŸãã æ¬¡ã«ãã©ã±ããã倿°
int yb1 ã
int yb2 ã
TV.draw_lineïŒ10ãyb1 + 8ã10ãyb1-8ã1ïŒãæç»ããŸãã ããã³
TV.draw_lineïŒ110ãyb2 + 8ã110ãyb2-8ã1ïŒ; ã ããŒã«ã®å Žåãšåæ§ã«ãç»é¢ã®æŽæ°ãã€ãŸãããã¬ãŒã¹ãªããã
ã©ã±ããã®ç®¡çã¯ãã¿ã³ã§è¡ãããŸãã ãã¿ã³ããã³
2ãš
3-æåã®ã©ã±ããã
4ãš5-2çªç®ã®ã©ã±ãããæ¥ç¶ããŸãã ããŒã¹ãããŒã¯ã確èªãã座æšã倿ŽããŸãã
颿°ã¯æ¬¡ã®ãšããã§ãã
void racketsmove() { TV.draw_line(10, yb1+8, 10, yb1-8, 0); TV.draw_line(110, yb2+8, 110, yb2-8, 0); if((yb1 - 8) > 1) { if(digitalRead(2) == HIGH) { yb1 -= 2;} } if((yb1 + 8) < 95) { if(digitalRead(3) == HIGH) {yb1 += 2;} } if((yb2 - 8) > 1) { if(digitalRead(4) == HIGH) {yb2 -= 2; } } if((yb2 + 8) < 95) { if(digitalRead(5) == HIGH) {yb2 += 2;} } TV.draw_line(10, yb1+8, 10, yb1-8, 1); TV.draw_line(110, yb2+8, 110, yb2-8, 1); }
ããŠã
ããŒã«ã«æ»ããŸãããã æ¬¡ã«ãå£ãšã©ã±ããããã®è¡çªãšåçºãæžããŸãããã 颿°
-void ballcolïŒïŒ ã ãããè¡ãã«ã¯ããªããžã§ã¯ãã«å¯Ÿããçžå¯Ÿäœçœ®ã確èªããŠãããè§åºŠã確èªããŸãã æ¬¡ã«ããã®è§åºŠãå¥ã®è§åºŠã«å€æŽããŸãã è§åºŠãããã°ãæšæž¬ããã®ã¯ç°¡åã§ãã
åå°è§ã¯å
¥å°è§ã«çãã
ã©ã±ããã®ç¹å®ã®é åã«ã€ããŠãããã€ãã®ç©ççãªäŸå€ãäœæã§ããŸãã
æ©èœïŒ
void ballcol() { if(x == 1 || x == 119 || (x == 10 && y < (yb1 + 3) && y > (yb1 - 3)) || (x == 110 && y < (yb2 + 3) && y > (yb2 - 3))) { if(a==1){a=5;}else if(a==2){a=8;}else if(a==3){a=7;}else if(a==4){a=6;}else if(a==5){a=1;}else if(a==6){a=4;}else if(a==7){a=3;}else if(a==8){a=2;} } if(x == 10 && y < (yb1 - 3) && y > (yb1 - 8)) { a = 2; } if(x == 10 && y > (yb1 + 3) && y < (yb1 + 8)) { a = 4; } if(x == 110 && y < (yb2 - 3) && y > (yb2 - 8)) { a = 8; } if(x == 110 && y > (yb2 + 3) && y < (yb2 + 8)) { a = 6; } if(y == 95 || y == 1) { if(a==1){a=5;}else if(a==2){a=4;}else if(a==3){a=7;}else if(a==4){a=2;}else if(a==5){a=1;}else if(a==6){a=8;}else if(a==7){a=3;}else if(a==8){a=6;} } }
èåŸã«ããæãé£ããéšåã¯ãããªããæ£åžžã«åŒåžããããšãã§ããŸãã
çŸæç¹ã§ã¯ãã¹ã³ã¢ãªã³ã°ã·ã¹ãã ãã¿ã€ããŒãããã³åèµ·åããã§ããŸããã
ã¿ã€ããŒããå§ããŸãããã ç§
float tsã®å€æ°ïŒçµ¶å¯Ÿã«åžžã«æ ŒçŽãããŸãïŒã倿°
int tm ïŒ
tsããååŸããåæ°ïŒããããŸãã
tmã®å€ã¯
ã tm = ts / 60ã®æäœã§èšå®ããŸã
ã ã ãããŠã
TV.printïŒ81,1ãtmïŒç»é¢ã«å€ã衚瀺ããŸã
ã TV.printïŒ97.1ã "ã"ïŒ; TV.printïŒ100,1ãintïŒts-ïŒtm * 60ïŒïŒïŒ; ã
ç¶ããŸãããã åèµ·å颿°ã¯ã
void restartïŒïŒãåŒã³åºã
ãŸã ã ããã§ã倿°ã®åæå€ãè¿ããŸãã
ã³ãŒãïŒ
void restart() { TV.clear_screen(); x = 60; y = 48; yb1 = 48; yb2 = 48; a = 8; ts = 900.0; c1 = 0; c2 = 0; }
æçµçãªæ¡ç¹ã·ã¹ãã ã¯ãåçŽãããŸãã Googleãéãããåçã²ãŒã ã®ã«ãŒã«ãã«é²ã¿ãŸãã ã©ããªãã€ã³ããäžããããããæ¢ããŠããŸãã 眰éã«é¢ããéšåãèŠã€ãããšã次ã®ããšãããããŸããããæåã®ãªããŠã³ãåŸã«çžæã«éãããããŒã«ãæ£ããåæ ããæéããªãå Žåããã€ã³ããåã£ããšã¿ãªãããŸããã åé¡ã¯ãçæãã¹ãããŒã¯ããã®ãæ°ããæ¹æ³ã§ããïŒ..ãããŠã2次å
ã°ã©ãã£ãã¯ã¹ã®ãã³ãã³ã®ãããã¹ãããŒã¯ãæ°ããå¿
èŠã¯ãããŸããã
ç§ãã¡ã¯èœã¡çããŠéãèŠã€ãããã€ãã®ããã«ãã¡ããã©åŽå£ã«å¯Ÿãã座æšããã§ãã¯ããŸãã è¡çªãçºçããå Žåããã£ãŒã«ãã®å察åŽã«ãããã¬ãŒã€ãŒã«ãã€ã³ããå ç®ãããŸãã 颿°
-void ballscountïŒïŒ ã ã¿ã€ããŒãåºãããæåã®ãã¬ãŒã€ãŒïŒ
int c1倿°ïŒãš2çªç®ã®ãã¬ãŒã€ãŒïŒ
int c2倿°ïŒã®ã¹ã³ã¢ãæ¯èŒããåè
ã宣èšããé
å»¶ãå ããŠåèµ·åããŸãã
ã³ãŒãïŒ
void ballscount() { if(x == 1) { c2++; } if(x == 119) { c1++; } if(c1 > c2 && ts == 0) { TV.println(10, 45, "Player 1 won!"); delay(10000); restart(); } else if(c1 < c2 && ts == 0) { TV.println(10, 45, "Player 2 won!"); delay(10000); restart(); } else if(c1 == c2 && ts == 0) { TV.println(10, 45, "You are equal"); delay(10000); restart(); }
ããã§ãã¹ãŠã§ããã²ãŒã ã³ãŒããå®å
šã«äœæããŸããã ããªãé¢çœããŠããã¬ã€ã§ããŸãã
æ ãè
ã®ããã«ãç§ã¯ã³ãŒãå
šäœãæžãã ãã§ãã
å®å
šãªã¹ã¯ãªããåèš218è¡ã
#include <TVout.h> #include <fontALL.h> TVout TV; int x, y, a, c1, c2, yb1, yb2, tm, tsh, s; float ts; boolean paused = false; void setup ( ) { TV.begin(NTSC, 120, 96); TV.clear_screen(); TV.select_font(font6x8); TV.println( 0, 50, "Welcome to Shimo" ); TV.delay (5000); TV.clear_screen(); x = 60; y = 48; yb1 = 48; yb2 = 48; a = 8; ts = 900.0; s = 2; } void loop ( ) { if(!paused) { TV.draw_line(60,0,60,96,1); TV.select_font(font8x8); racketsmove(); ballscount(); TV.print(1,1,c1); TV.print(18,1,":"); TV.print(26,1,c2); tm = ts / 60; ts -= 0.04; if(ts < 0) { ts = 0; } TV.draw_rect(81,1,38,10,0,0); TV.print(81,1,tm); TV.print(97,1,"."); TV.print(100,1,int(ts-(tm*60))); ballcol(); ballmove(s, a); TV.delay(50); if(digitalRead(6) == HIGH) { paused = true; delay(1000); } } else { TV.println(40,4,"pause"); if(digitalRead(6) == HIGH) { paused = false; delay(1000); TV.clear_screen(); } } } void ballscount() { if(x == 1) { c2++; } if(x == 119) { c1++; } if(c1 > c2 && ts == 0) { TV.println(10, 45, "Player 1 won!"); delay(10000); restart(); } else if(c1 < c2 && ts == 0) { TV.println(10, 45, "Player 2 won!"); delay(10000); restart(); } else if(c1 == c2 && ts == 0) { TV.println(10, 45, "You are equal"); delay(10000); restart(); } } void ballcol() { if(x == 1 || x == 119 || (x == 10 && y < (yb1 + 3) && y > (yb1 - 3)) || (x == 110 && y < (yb2 + 3) && y > (yb2 - 3))) { if(a==1){a=5;}else if(a==2){a=8;}else if(a==3){a=7;}else if(a==4){a=6;}else if(a==5){a=1;}else if(a==6){a=4;}else if(a==7){a=3;}else if(a==8){a=2;} } if(x == 10 && y < (yb1 - 3) && y > (yb1 - 8)) { a = 2; } if(x == 10 && y > (yb1 + 3) && y < (yb1 + 8)) { a = 4; } if(x == 110 && y < (yb2 - 3) && y > (yb2 - 8)) { a = 8; } if(x == 110 && y > (yb2 + 3) && y < (yb2 + 8)) { a = 6; } if(y == 95 || y == 1) { if(a==1){a=5;}else if(a==2){a=4;}else if(a==3){a=7;}else if(a==4){a=2;}else if(a==5){a=1;}else if(a==6){a=8;}else if(a==7){a=3;}else if(a==8){a=6;} } } void racketsmove() { TV.draw_line(10, yb1+8, 10, yb1-8, 0); TV.draw_line(110, yb2+8, 110, yb2-8, 0); if((yb1 - 8) > 1) { if(digitalRead(2) == HIGH) { yb1 -= 2; } } if((yb1 + 8) < 95) { if(digitalRead(3) == HIGH) { yb1 += 2; } } if((yb2 - 8) > 1) { if(digitalRead(4) == HIGH) { yb2 -= 2; } } if((yb2 + 8) < 95) { if(digitalRead(5) == HIGH) { yb2 += 2; } } TV.draw_line(10, yb1+8, 10, yb1-8, 1); TV.draw_line(110, yb2+8, 110, yb2-8, 1); } void ballmove(int vel, int angle) { TV.set_pixel(x,y,0); if(angle == 1) { y -= vel; } if(angle == 3) { x += vel; } if(angle == 5) { y += vel; } if(angle == 7) { x -= vel; } if(angle == 2) { x += round(vel/2); y -= round(vel/2); } if(angle == 4) { x += round(vel/2); y += round(vel/2); } if(angle == 6) { x -= round(vel/2); y += round(vel/2); } if(angle == 8) { x -= round(vel/2); y -= round(vel/2); } TV.set_pixel(x,y,1); } void restart() { TV.clear_screen(); x = 60; y = 48; yb1 = 48; yb2 = 48; a = 8; ts = 900.0; c1 = 0; c2 = 0; }
ã¹ããã4.äœãåãåã
ç§ã¯ã4mmã®åæ¿ããã¬ãŒã¶ãŒã«ãã¿ãŒïŒãŸãã¯ãã©ã€ã¹ç€ã確ãã«ããããŸããïŒã§ã±ãŒã¹ãåãããšã«ããŸããã ç§ã¯InkScapeã§æããå°ãæ¥ãããããããã©ã€ã¹ç€åœ¢åŒã«å€æããŸããã

ã²ãŒã ãããã«ã€ããŠã¯ãå°ããªã¿ãã¬ãããåãåãããã¿ã³çšã®ç©ŽãéããŸããã ããªãããŸããããŸããããæ®å¿µãªããåçã倱ããŸããã
ãããã«
ãã®éçšã§ãArduinoã«2ã€ã®ã²ãŒã ããããåããæšæºã®ãã³ãã³ã²ãŒã ãæèŒããã·ã³ãã«ãªã²ãŒã ãã¬ãã²ãŒã ã³ã³ãœãŒã«ãäœæããŸããã
远å ã®ãœãŒã¹ãšã¡ã¢
1. ã©ã€ãã©ãªã«é¢ããæ
å ±
2. æ¥ç¶ããŒãã«é¢ããæ
å ±
3. äžéšã®ãªã¯ãšã¹ãã§ã¯ãã«ããŒç»åãå§çž®ãããŠããŸããã