1. 게임 배경 소개 (앞쪽에 쓰여진 말도 안되는 말) :
5 월 초 어느 날, 나는이 게임을 추천하는 특정 웹 사이트 인 Pongo를 보았다. 나는 꽤 좋아 보였고 iPad로 시도했습니다. 두 게임을 한 후, 나는 그것이 좋은 일이라고 생각했고, 그것은 빚진 손길이었던 게임이기 때문에 매우 만족 스러웠습니다. 모두가 그것을 알고 있습니다.
그러나 잠시 후, 나는 게임이 iPad에 몇 가지 버그가있는 것 같다는 것을 알았습니다. 나는 한동안 놀고 나서 갇히게 될 것이고 나는 그것을 퇴각하도록 강요 할 수 있었다. 정말 가슴 아픈 일이었고 기록은 여전히 부러지기를 기다리고있었습니다.
무엇을해야합니까? 자신의 게임을하는 것보다 게임을하는 것이 더 낫다는 생각은 다시 불쾌 해 보였고, 패드를 친구의 가슴 아픈 곳에 던졌습니다. 나는 조용히 컴퓨터로 돌아와서 막을 수없는 것을 쓰기 시작했다.
기본 프레임 워크를 기록한 다음 Sinaapp에 던져서 시도하는 데 약 2 시간이 걸렸습니다. 기본적으로 연주하고 샤워를하고 잠자리에 들기 가장 좋습니다.
다음날 일어 났을 때, 나는 주말에 할 일이 없었기 때문에 인터페이스를 디자인하는 데 시간을 보냈습니다. 불행히도, 나는 심각한 버그를 직접 발견하고 마침내 그들을 수정하는 데 시간이 걸렸습니다.
마지막으로 게임의 이름은 "Pongo+"로 지명되었습니다 (휴대 전화에서 플레이하려면 나를 클릭하십시오). 컴퓨터는 당분간 지원되지 않습니다. 그건 그렇고, 소스 코드는 GitHub에 업로드되었고 제출 점수 모듈이 제거되었습니다.
2. 게임 시험 웹 사이트 :
Pongo+ (모바일 만 해당) : http://mypongo.sinaapp.com/
github 오픈 소스 (Fork는 게임을 개선 할 수 있습니다) : https://github.com/chenreason/pongo/blob/gh-pages/index.html
3. 게임 규칙 및 게임 플레이 :
화면을 클릭하면 베젤 움직임의 방향이 변경됩니다. 베젤을 클릭하면 베젤의 방향이 한 번 변경되며, 작은 공을 막고 큰 원이 떨어지지 않도록하는 목적으로. 시간이 길수록 좋습니다! 마지막으로, 당신은 순위를 위해 자신의 점수를 제출할 수 있습니다!
4. 게임에 사용 된 기술 :
HTML, CSS, JavaScript, Canvas, Php
5. 게임 디자인 아이디어 :
a) 캔버스를 사용하여 게임의 기본 인터페이스를 그립니다. 바닥은 흑백 사각형이며 큰 원으로 덮여 있으며 작은 원과 배플이 큰 원에 그려집니다. 배플 중간에 1px 크기의 초소형 원이 있습니다 (충돌 감지 용).
b) 작은 원의 8 가지 방향이 있습니다 : 상단, 하단, 왼쪽, 오른쪽, 오른쪽, 왼쪽, 왼쪽 아래, 오른쪽 상단 및 오른쪽 아래.
c) 배플의 움직임 방향은 시계 방향과 시계 반대 방향으로 만 있습니다.
d) 충돌 감지에는 엔진의 사용이 포함되지 않고 배플의 중간에있는 작은 원과 슈퍼 원을 기반으로 거리 판단을하여 간단한 충돌 감지를 달성합니다.
e) 공을 충돌 한 후 리바운드의 방향이 결정되고 일반적인 지식은이를 나열하는 데 사용되며 총 8 가지 상황이 있습니다.
6. 게임 구현의 어려움 :
a) 충돌 감지.
b) 타이머 setinterval 클리어런스 타이밍과 명확하고 철저한 지 여부.
c) 타이머 사이클의 길이와 게임 경험 사이의 관계.
d) Android 및 iOS 장치의 다양한 성능으로 인한 게임 유창성 문제.
7. 게임의 기존 문제 :
a) 충돌 감지는 두 원 사이의 중심 거리를 비교하고 타이머 사용을 포함하기 때문에 타이머 사용이 매우 짧기 때문에 수십 개의 충돌이 실제로 육안으로 볼 수있는 충돌 뒤에 발생했습니다. 이렇게하면 볼의 실제 반동 방향이 실제 물리적 정리와 다릅니다. 최적화 후, 발생 확률은 낮지 만 피하지 않았습니다. 따라서 일부 플레이어는 원이 배플의 중심에 정확하게 닿지 않으면 게임이 실패 할 수 있음을 알게됩니다.
b) 기능이 너무 장악하고 낮은 효율성 및 타이머 사용이기 때문에 Android의 게임 경험은 iOS 또는 기타 모바일 장치와 다릅니다 (일반적으로 iOS는 Android 때문입니다).
c) 순위 목록은 자동 실시간 업데이트를 달성하지 못했습니다. (데이터베이스는 아직 사용되지 않습니다)
8. 게임 인터페이스 미리보기 :
(그림 1은 첫 번째 판이고, 그림 2는 버튼을 제거하고, 그림 3은 최종 판이며, 그림 4는 순위 목록입니다)
그림 1
그림 2
그림 3
9. 게임 JavaScript의 소스 코드의 일부 :
코드 사본은 다음과 같습니다.
var ifingame = 0;
var maxgrade = 0, grade = 0;
var grade1, grade2;
var 닉네임;
var gamespeed = 1.4; // 볼 속도
var linespeed = math.pi/95; // 트랙 라인 속도
var crashdistancefaild = -7; // 충돌 감지 매개 변수
var crashdistancesucc = 15
var fantanjuli = 7;
var themaxgradeline = 12.1;
기능 getCookie1 (별명)
{
if (document.cookie.length> 0)
{
c_start = document.cookie.indexof (별명 + "=")
if (c_start! = -1)
{
c_start = c_start + nickname.length + 1;
c_end = document.cookie.indexof ( ",", c_start);
if (c_end ==-1)
c_end = document.cookie.length;
Unescape를 반환합니다 (document.cookie.substring (c_start, c_end));
}
}
반품 ""
}
기능 getCookie2 (myMaxgrade)
{
if (document.cookie.length> 0)
{
c_start = document.cookie.indexof (mymaxgrade + "=")
if (c_start! = -1)
{
c_start = c_start + mymaxgrade.length + 1;
c_end = document.cookie.indexof ( ";", c_start);
if (c_end ==-1)
c_end = document.cookie.length;
Unescape를 반환합니다 (document.cookie.substring (c_start, c_end));
}
}
반품 ""
}
함수 setCookie (별명, 값, MyMaxgrade, Maxgrade, 만료)
{
var exdate = 새로운 날짜 ()
exdate.setdate (exdate.getDate ()+만료)
document.cookie = nickname + "=" + Escape (value) + "," + mymaxgrade + "=" + Escape (maxgrade) + ((expriedays == null)? ":"; expires = " + exdate.togmtstring ());
}
기능 checkCookie ()
{
별명 = getCookie1 ( 'nickname');
maxgrade = parseint (getCookie2 ( 'myMaxgrade'));
if (isnan (maxgrad) == true)
{
maxgrade = 0;
}
if (nickname! = null && 별명! = "")
{
ALERT ( 'Welcome'+Nickname+'back!'+'/n'+"좋아하면 공유하십시오 ~");
}
또 다른
{
닉네임 = 프롬프트 ( '닉네임을 입력하십시오 : (이름이 너무 길고 불완전하게 표시됩니다)', "").
if (nickname! = null && 별명! = "")
{
var maxgradeString = maxgrade.toString ();
SetCookie ( '별명', 별명, 'MyMaxgrade', MaxgradeString, 365);
}
}
}
var objpane = document.getElementById ( "Pane");
var ctxpane = objpane.getContext ( "2d");
ctxpane.translate (150,150); // 필수 캔버스 센터 포인트 번역
함수 sendmail ()
{
if (grade2> themaxgradeline)
var max_grade = grade2;
Window.location.href = 'Index.php? max_grade ='+max_grade+'& nick_name ='+닉네임;
/* {
<? php
$ grade = $ _ get [ 'max_grade'];
$ nickname = $ _ get [ 'nick_name'];
$ mail = new Saemail ();
$ ret = $ mail-> quicksend ( '[email protected]', $ grade, $ 닉네임, '[email protected]', 'mypongo');
$ mail-> clean ();
?>
}*/
ALERT (별명+"등급은"+grade2+"가 성공적으로 제출되었습니다 ~");
}
var gamedirection = {
Shang : 1,
XIA : 5,
Zuo : 7,
당신 : 3,
Zuoshang : 8,
Zuoxia : 6,
Youshang : 2,
Youxia : 4,
시계 : 0,
반클 록 : 9,
};//방향
var canvas = {
너비 : 300,
높이 : 300,
};//캔버스
var bigcircle = {// big Circle 매개 변수
x : 0, // x 축의 좌표 값은 원 중심의 중심
y : 0, // 원의 중심의 y 축 좌표 값
R : 150, // 원의 반경
C : 'RGB (255,255,255)',
}; // dayUan
var smallcircle = {// smallcircle 매개 변수
x : 0, // x 축의 좌표 값은 원 중심의 중심
y : 0, // 원의 중심의 y 축 좌표 값
R : 12, // 원의 반경
C : 'RGB (204,105,106)',
방향 : gamedirection.xia,
}; // 작은 원입니다
var line = {// 배플 라인의 매개 변수
x : 0, // x 축의 좌표 값은 원 중심의 중심
y : 0, // 원의 중심의 y 축 좌표 값
R : 150, // 아크의 반경
시작 : (Math.pi/2-Math.pi/16),
종료 : (Math.pi/2+math.pi/16),
C : 'RGB (55,55,55)',
방향 : gamedirection.anticlock,
}; // 추적 라인
var dot = {// 추적점 매개 변수
x : (bigcircle.r*math.cos (line.start+math.pi/16)), // 큰 원을 원점으로 사용하십시오
Y : (bigcircle.r*math.sin (line.start+math.pi/16)),
R : 1,
} // 추적점
함수 changelinedirection ()
{
if (line.direction == gamedirection.clock)
{
line.direction = gamedirection.anticlock;
}
또 다른
{
line.direction = gamedirection.clock;
}
}
함수 getDistance () {
var 거리 = Math.sqrt ((smallcircle.x)*(smallcircle.x)+(smallcircle.y)*(smallcircle.y));
반환 거리;
} // 작은 공과 큰 원 센터 사이의 정사각형 거리로 돌아갑니다 getDistance ()
function ifgameover () {// 경계가 없는지 판단합니다
if ((getDistance () - bigcircle.r)> 5)
진실을 반환하십시오.
또 다른
거짓을 반환합니다.
} // 게임이 ifgameover () 종료되는지 판단합니다.
함수 ifcrash () {// 충돌 감지
var dx = dot.x-smallcircle.x;
var dy = dot.y-smallcircle.y;
var dd = math.sqrt (dx*dx+dy*dy);
if (dd <crashdistancesucc)
진실을 반환하십시오.
또 다른
거짓을 반환합니다.
} // 충돌 감지 ifcrash ()
함수 randomback ()
{
var x = math.floor (math.random ()*3);
스위치 (smallcircle.direction) {
case gamedirection.shang :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.xia;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.zuoxia;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.youxia;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
사례 gamedirection.xia :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.shang;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.zuoshang;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.youshang;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
case gamedirection.zuo :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.you;
smallcircle.x = smallcircle.x+fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.youshang;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.youxia;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
Case Gamedirection.you :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.zuo;
smallcircle.x = smallcircle.x-fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.zuoxia;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.zuoshang;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
Case Gamedirection.zuoshang :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.youxia;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.xia;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.you;
smallcircle.x = smallcircle.x+fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
사례 gamedirection.zuoxia :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.youshang;
smallcircle.x = smallcircle.x+fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.shang;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.you;
smallcircle.x = smallcircle.x+fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
Case Gamedirection.youshang :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.zuoxia;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.zuo;
smallcircle.x = smallcircle.x-fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.xia;
smallcircle.y = smallcircle.y+fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
Case Gamedirection. Youxia :
{
스위치 (x)
{
케이스 0 :
smallcircle.direction = gamedirection.zuoshang;
smallcircle.x = smallcircle.x-fantanjuli;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
case 1:
smallcircle.direction = gamedirection.zuo;
smallcircle.x = smallcircle.x-fantanjuli;
부서지다;
case 2:
smallcircle.direction = gamedirection.shang;
smallcircle.y = smallcircle.y-fantanjuli;
부서지다;
기본:
부서지다;
}부서지다;
}
기본:
{
부서지다;
}
}
} // 공이 무작위로 반전 된 randomback ()
함수 smallcircledirection ()
{
스위치 (smallcircle.direction) {// 볼의 방향에 따라 움직입니다
case gamedirection.shang :
{
smallcircle.y = smallcircle.y-gamespeed;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
사례 gamedirection.xia :
{
smallcircle.y = smallcircle.y+GamesPeed;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
case gamedirection.zuo :
{
smallcircle.x = smallcircle.x-gamespeed;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
Case Gamedirection.you :
{
smallcircle.x = smallcircle.x+gamespeed;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
Case Gamedirection.zuoshang :
{
smallcircle.x = smallcircle.x-gamespeed*0.8;
smallcircle.y = smallcircle.y-gamespeed*0.8;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
사례 gamedirection.zuoxia :
{
smallcircle.x = smallcircle.x-gamespeed*0.8;
smallcircle.y = smallcircle.y+GamesPeed*0.8;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
Case Gamedirection.youshang :
{
smallcircle.x = smallcircle.x+gamespeed*0.8;
smallcircle.y = smallcircle.y-gamespeed*0.8;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
Case Gamedirection. Youxia :
{
smallcircle.x = smallcircle.x+gamespeed*0.8;
smallcircle.y = smallcircle.y+GamesPeed*0.8;
학년 ++;
if (grade> maxgrade)
{
maxgrade = 등급;
NewRecoder ();
}
addone ();
부서지다;
}
기본:
{
부서지다;
}
}
} // 공이 SmallCircLedirection () 이동합니다.
/*하단 원을 그리십시오*/
ctxpane.beginpath (); // dayuan
ctxpane.arc (bigcircle.x, bigcircle.y, bigcircle.r, 0, math.pi*2, true);
ctxpane.fillstyle = bigcircle.c;
ctxpane.fill ();
ctxpane.closepath ();
/*하단 추적 라인을 그리십시오*/
ctxpane.beginpath ();
ctxpane.linewidth = 6;
ctxpane.strokestyle = line.c;
ctxpane.arc (line.x, line.y, line.r, line.start, line.end, false);
ctxpane.stroke ();
ctxpane.closepath ();
함수 tapme () // tapme
{
ctxpane.beginpath ();
ctxpane.strokestyle = "RGB (255,222,195)";
ctxpane.font = "80px 파피루스";
ctxpane.stroketext ( '탭', -95,30);
ctxpane.fillstyle = "RGB (255,205,105)";
ctxpane.font = "35px 파피루스";
ctxpane.filltext ( 'me', 70,30);
ctxpane.closepath ();
}
기능 newRecoder ()
{
ctxpane.beginpath ();
ctxpane.fillstyle = "RGB (255,0,0)";
ctxpane.font = "18px 파피루스";
ctxpane.fillText ( "New!", 58,80);
ctxpane.closepath ();
}
함수 addone ()
{
grade1 = (등급/150) .tofixed (1);
grade2 = (maxgrade/150) .tofixed (1);
var say1 = "지금";
var says2 = "Best"
ctxpane.beginpath ();
ctxpane.strokestyle = "RGB (250,222,185)";
ctxpane.font = "60px 파피루스";
ctxpane.stroketext (grade1, -45, -60);
ctxpane.stroketext (grade2, -45,100);
ctxpane.fillstyle = "RGB (255,0,100)";
ctxpane.font = "15px 파피루스";
ctxpane.filltext (Say1,58, -60);
ctxpane.fillstyle = "RGB (255,0,100)";
ctxpane.font = "15px 파피루스";
ctxpane.filltext (Say2,58,100);
ctxpane.closepath ();
}
함수 movEtest () {
if (ifgameover ())
{
ifingame = 0;
if (maxgrade> parseint (getCookie2 ( 'myMaxgrade'))))
{
setCookie ( 'nickname', 닉네임, 'mymaxgrade', maxgrade.tostring (), 365);
}
ClearInterval (타이머);
tapme ();
}
또 다른
{
if (ifcrash ())
{
randomback ();
}
ctxpane.clearrect (-150, -150,300,300); // 화면을 지우십시오
ctxpane.beginpath (); // dayuan
ctxpane.arc (bigcircle.x, bigcircle.y, bigcircle.r, 0, math.pi*2, true);
ctxpane.fillstyle = bigcircle.c;
ctxpane.fill ();
ctxpane.closepath ();
if (line.direction == gamedirection.clock) // 선을 시계 방향으로 추적합니다
{
line.start = line.start + linespeed;
line.end = line.end +linespeed;
ctxpane.beginpath ();
ctxpane.linewidth = 4;
ctxpane.strokestyle = line.c;
ctxpane.arc (line.x, line.y, line.r, line.start, line.end, false);
ctxpane.stroke ();
ctxpane.closepath ();
}
if (line.direction == gamedirection.anticlock) // 시계 반대 방향을 추적합니다
{
line.start = line.start -linepeed;
line.end = line.end -linespeed;
ctxpane.beginpath ();
ctxpane.linewidth = 4;
ctxpane.strokestyle = line.c;
ctxpane.arc (line.x, line.y, line.r, line.start, line.end, false);
ctxpane.stroke ();
ctxpane.closepath ();
}
dot.x = bigcircle.r*math.cos (line.start+math.pi/32) // 추적점
dot.y = bigcircle.r*math.sin (line.start+math.pi/32)
ctxpane.beginpath (); // 온라인 추적 지점
ctxpane.arc (dot.x, dot.y, dot.r, 0, math.pi*2, true);
ctxpane.fillstyle = smallcircle.c;
ctxpane.fill ();
ctxpane.closepath ();
smallcircledirection (); // smallcircledirection (); //
ctxpane.save ();
ctxpane.beginpath ();
ctxpane.arc (smallcircle.x, smallcircle.y, smallcircle.r, 0, math.pi*2, true);
ctxpane.fillstyle = smallcircle.c;
ctxpane.fill ();
ctxpane.closepath ();
ctxpane.restore ();
}
} // 메인 함수
////////////////////////////////////////////////////4
tapme ();
var 타이머;
함수 startGame () {// 게임을 시작합니다
if (ifingame == 0)
{
ifingame = 1;
등급 = 0;
var xx = math.floor (math.random ()*8);
/* 스위치 (xx)
{
케이스 0 :
smallcircle.direction = gamedirection.shang;
부서지다;
case 1:
smallcircle.direction = gamedirection.xia;
부서지다;
case 2:
smallcircle.direction = gamedirection.zuo;
부서지다;
사례 3 :
smallcircle.direction = gamedirection.you;
부서지다;
case 4:
smallcircle.direction = gamedirection.zuoshang;
부서지다;
case 5:
smallcircle.direction = gamedirection.zuoxia;
부서지다;
사례 6 :
smallcircle.direction = gamedirection.youshang;
부서지다;
사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례.
smallcircle.direction = gamedirection.youxia;
부서지다;
기본:
부서지다;
}*/
smallcircle.direction = gamedirection.xia;
smallcircle.x = smallcircle.y = 0;
line.start = math.pi/2-math.pi/26;
line.end = math.pi/2+math.pi/26;
line.direction = gamedirection.anticlock;
ClearInterval (타이머);
타이머 = setInterval (movtest, 10);
}
} // 게임 시작 startGame ()
함수 opentop ()
{
Window.location = "http://pongotop.sinaapp.com";
}
10. 끝에 썼다
이것은 순전히 자기 엔터테인먼트입니다. 글을 쓰고 나서 셋째 날, 나는 인턴쉽을 찾기 위해 이력서를 제출하는 데 바빴고 그것을 돌볼 시간이 없었습니다. 나는 친구들이 놀 수 있도록 친구들에게 던졌습니다. 이번 달이 지났고 나는이 게임을 다시 본다. 이렇게 죽지 않았어야한다고 생각합니다. 나는 기술이없고 아주 잘합니다. 따라서이 기사가 Pongo에 관심이있는 친구들을 도울 수 있기를 바랍니다. 또한,이 분야의 전문가가 그가 그것을 본다면 저에게 조언을 줄 수 있다면, 그는 모든 의심과 조언에 대한 메시지를 남기도록 환영합니다. 감사합니다!