var ifingame=0;

var maxgrade=0,grade=0;

var grade1,grade2;

var nickname;

var gamespeed=1.4;//小球速度

var linespeed=Math.PI/95; //跟踪线速度

var crashdistancefaild=-7;//碰撞检测参数

var crashdistancesucc=15

var fantanjuli=7;

var themaxgradeline=12.1;

function getCookie1(nickname)

{

if (document.cookie.length>0)

{

c_start=document.cookie.indexOf(nickname + "=")

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;

return unescape(document.cookie.substring(c_start,c_end));

}

}

return ""

}

function 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;

return unescape(document.cookie.substring(c_start,c_end));

}

}

return ""

}

function setCookie(nickname,value,mymaxgrade,maxgrade,expiredays)

{

var exdate=new Date()

exdate.setDate(exdate.getDate()+expiredays)

document.cookie=nickname+ "=" +escape(value)+"," + mymaxgrade + "=" + escape(maxgrade) + ((expiredays==null) ? "" : "; expires="+exdate.toGMTString());

}

function checkCookie()

{

nickname=getCookie1('nickname');

maxgrade=parseInt(getCookie2('mymaxgrade'));

if(isNaN(maxgrade)==true)

{

maxgrade=0;

}

if (nickname!=null && nickname!="")

{

alert('欢迎'+nickname+'回来!'+'\n'+"如果喜欢请分享一下哈~");

}

else

{

nickname=prompt('请输入你的昵称:(名字太长上榜可是会显示不完整的哦)',"")

if (nickname!=null && nickname!="")

{

var maxgradestring=maxgrade.toString();

setCookie('nickname',nickname,'mymaxgrade',maxgradestring,365);

}

}

}

var objpane=document.getElementById("pane");

var ctxpane=objpane.getContext("2d");

ctxpane.translate(150,150);//必备 画布中心点平移

function sendmail()

{

if(grade2>themaxgradeline)

var max_grade=grade2;

window.location.href='index.php?max_grade='+max_grade+'&nick_name='+nickname;

/*    {

$grade=$_GET['max_grade'];

$nickname=$_GET['nick_name'];

$mail = new SaeMail();

$ret = $mail->quickSend( 'reasonpongo@163.com' , $grade , $nickname ,'reasonpongo@163.com' , 'mypongo' );

$mail->clean();

?>

}*/

alert(nickname+"你的成绩为:"+grade2+"提交成功~");

}

var gamedirection={

shang : 1,

xia  : 5,

zuo  : 7,

you  : 3,

zuoshang: 8,

zuoxia : 6,

youshang: 2,

youxia : 4,

clock : 0,

anticlock: 9,

};//方向

var canvas={

width : 300,

height: 300,

};//画布

var bigcircle = {//大圆参数

x : 0,    //圆心的x轴坐标值

y : 0,    //圆心的y轴坐标值

r : 150,  //圆的半径

c : 'rgb(255,255,255)',

};//大圆

var smallcircle = {//小圆参数

x : 0,    //圆心的x轴坐标值

y : 0,    //圆心的y轴坐标值

r : 12,  //圆的半径

c : 'rgb(204,105,106)',

direction :  gamedirection.xia,

};//小圆

var line = {//挡板线的参数

x : 0,    //圆心的x轴坐标值

y : 0,    //圆心的y轴坐标值

r : 150 ,  //圆弧的半径

start:(Math.PI/2-Math.PI/16),

end : (Math.PI/2+Math.PI/16),

c : 'rgb(55,55,55)',

direction: 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,

}//跟踪点

function changelinedirection()

{

if(line.direction==gamedirection.clock)

{

line.direction=gamedirection.anticlock;

}

else

{

line.direction=gamedirection.clock;

}

}

function getdistance(){

var distance=Math.sqrt((smallcircle.x)*(smallcircle.x )+(smallcircle.y )*(smallcircle.y ));

return distance;

}//返回小球与大圆中心距离平方 getdistance()

function ifgameover(){//判断是否出界

if((getdistance() - bigcircle.r)>5)

return true;

else

return false;

} //判断游戏是否结束 ifgameover()

function ifcrash(){  //碰撞检测

var dx = dot.x-smallcircle.x;

var dy = dot.y-smallcircle.y;

var dd=Math.sqrt(dx*dx+dy*dy);

if(dd< crashdistancesucc)

return true;

else

return false;

}//碰撞检测 ifcrash()

function randomback()

{

var x=Math.floor(Math.random()*3);

switch (smallcircle.direction){

case gamedirection.shang:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.xia;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.zuoxia;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.youxia;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.xia:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.shang;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.zuoshang;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.youshang;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.zuo:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.you;

smallcircle.x=smallcircle.x+fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.youshang;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.youxia;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.you:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.zuo;

smallcircle.x=smallcircle.x-fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.zuoxia;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.zuoshang;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.zuoshang:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.youxia;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.xia;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.you;

smallcircle.x=smallcircle.x+fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.zuoxia:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.youshang;

smallcircle.x=smallcircle.x+fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.shang;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.you;

smallcircle.x=smallcircle.x+fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.youshang:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.zuoxia;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y+fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.zuo;

smallcircle.x=smallcircle.x-fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.xia;

smallcircle.y=smallcircle.y+fantanjuli;

break;

default:

break;

} break;

}

case gamedirection.youxia:

{

switch (x)

{

case 0:

smallcircle.direction=gamedirection.zuoshang;

smallcircle.x=smallcircle.x-fantanjuli;

smallcircle.y=smallcircle.y-fantanjuli;

break;

case 1:

smallcircle.direction=gamedirection.zuo;

smallcircle.x=smallcircle.x-fantanjuli;

break;

case 2:

smallcircle.direction=gamedirection.shang;

smallcircle.y=smallcircle.y-fantanjuli;

break;

default:

break;

} break;

}

default:

{

break;

}

}

}//小球随机反向 randomback()

function smallcircledirection()

{

switch (smallcircle.direction){    //根据小球方向做移动

case gamedirection.shang:

{

smallcircle.y=smallcircle.y-gamespeed;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.xia:

{

smallcircle.y=smallcircle.y+gamespeed;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.zuo:

{

smallcircle.x=smallcircle.x-gamespeed;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.you:

{

smallcircle.x=smallcircle.x+gamespeed;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.zuoshang:

{

smallcircle.x=smallcircle.x-gamespeed*0.8;

smallcircle.y=smallcircle.y-gamespeed*0.8;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.zuoxia:

{

smallcircle.x=smallcircle.x-gamespeed*0.8;

smallcircle.y=smallcircle.y+gamespeed*0.8;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.youshang:

{

smallcircle.x=smallcircle.x+gamespeed*0.8;

smallcircle.y=smallcircle.y-gamespeed*0.8;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

case gamedirection.youxia:

{

smallcircle.x=smallcircle.x+gamespeed*0.8;

smallcircle.y=smallcircle.y+gamespeed*0.8;

grade++;

if(grade>maxgrade)

{

maxgrade=grade;

newrecoder();

}

addone();

break;

}

default:

{

break;

}

}

}//小球移动 smallcircledirection()

/*画出底部圆*/

ctxpane.beginPath(); //大圆

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();

function tapme()//tapme

{

ctxpane.beginPath();

ctxpane.strokeStyle="rgb(255,222,195)";

ctxpane.font = "80px Papyrus";

ctxpane.strokeText('TAP',-95,30);

ctxpane.fillStyle="rgb(255,205,105)";

ctxpane.font = "35px Papyrus";

ctxpane.fillText('me',70,30);

ctxpane.closePath();

}

function newrecoder()

{

ctxpane.beginPath();

ctxpane.fillStyle="rgb(255,0,0)";

ctxpane.font = "18px Papyrus";

ctxpane.fillText("New!",58,80);

ctxpane.closePath();

}

function addone()

{

grade1=(grade/150).toFixed(1);

grade2=(maxgrade/150).toFixed(1);

var say1="now";

var say2="best"

ctxpane.beginPath();

ctxpane.strokeStyle="rgb(250,222,185)";

ctxpane.font = "60px Papyrus";

ctxpane.strokeText(grade1,-45,-60);

ctxpane.strokeText(grade2,-45,100);

ctxpane.fillStyle="rgb(255,0,100)";

ctxpane.font = "15px Papyrus";

ctxpane.fillText(say1,58,-60);

ctxpane.fillStyle="rgb(255,0,100)";

ctxpane.font = "15px Papyrus";

ctxpane.fillText(say2,58,100);

ctxpane.closePath();

}

function movetest(){

if(ifgameover())

{

ifingame=0;

if(maxgrade>parseInt(getCookie2('mymaxgrade')))

{

setCookie('nickname',nickname,'mymaxgrade',maxgrade.toString(),365);

}

clearInterval(timer);

tapme();

}

else

{

if(ifcrash())

{

randomback();

}

ctxpane.clearRect(-150,-150,300,300); //清屏

ctxpane.beginPath(); //大圆

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 - 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();

}

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();//小圆

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();

}

}//主函数

///

tapme();

var timer;

function startgame(){//开始游戏

if(ifingame==0)

{

ifingame=1;

grade=0;

var xx=Math.floor(Math.random()*8);

/*      switch(xx)

{

case 0:

smallcircle.direction=gamedirection.shang;

break;

case 1:

smallcircle.direction=gamedirection.xia;

break;

case 2:

smallcircle.direction=gamedirection.zuo;

break;

case 3:

smallcircle.direction=gamedirection.you;

break;

case 4:

smallcircle.direction=gamedirection.zuoshang;

break;

case 5:

smallcircle.direction=gamedirection.zuoxia;

break;

case 6:

smallcircle.direction=gamedirection.youshang;

break;

case 7:

smallcircle.direction=gamedirection.youxia;

break;

default:

break;

}*/

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(timer);

timer=setInterval(movetest,10);

}

}//开始游戏 startgame()

function opentop()

{

window.location="http://pongotop.sinaapp.com";

}

短代码的java打地鼠_使用JavaScript实现网页版Pongo设计思路及源代码分享相关推荐

  1. 短代码的java打地鼠_女白领在家无聊玩打地鼠游戏,不经意间已经学会了Python编程...

    女白领在家无聊玩打地鼠游戏,不经意间已经学会了Python编程 玩打地鼠的游戏,因为有BUG,需要优化,于是无意间竟然学到了很多python的基础内容. 女白领说:在家玩了一个用python做的打地鼠 ...

  2. 用友nc阻止java运行_用友NC网页版进不去,应用程序已被安全设置阻止..._安全工程师_帮考网...

    在浏览器打开java程序时,出现应用程序已被阻止,应用程序错误,请单击以获取详细信息,遇到应用程序已被安全设置阻止怎么办,这个问题一般会同时出现在IE和chrome中,所以更换浏览器并不能解决问题. ...

  3. java古剑奇谭_古剑奇谭页游源码web可编译的源代码分享价值百万的100%完整源代码...

    古剑奇谭最新完整可编译源代码已测试100@完整版不多说,由于这个源代码比较完整,没有缺少文件,不要商用,请在下载后24小时内删除,否则后果自负. 源码介绍: 再分享一款网页游戏源码,这个游戏叫< ...

  4. 基于Java Bean Validation对Request参数进行校验的设计思路

    数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致重复代码的发生. 为了避免重复, 开发人员经常会把这些校验逻辑直 ...

  5. python web项目导出zip文件_通过javascript在网页端生成zip压缩包并下载

    zip.js是什么 通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载: 如何使用: 1:引用zip.js 2:引用jQuery ...

  6. 17天代码 品优购_品优购(IDEA版)-第一天

    品优购(IDEA版)-第一天 品优购IDEA版应该是2019年的新项目.目前只有视频.资料其他都还是旧的. 1.学习目标 1:了解电商行业特点以及理解电商的模式 2:了解整体品优购的架构特点 3:能够 ...

  7. 网页版的svn怎样同步代码_学会使用Hdlbits网页版Verilog代码仿真验证平台

    大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过 "https://hdlbits.01xz.net/wiki/Main_Page&q ...

  8. Java 版植物大战僵尸思路和源码分享!

    点击上方"逆锋起笔",公众号回复 PDF 领取大佬们推荐的学习资料 来源 | https://urlify.cn/byeEjy 有谁没玩过植物大战僵尸吗?用Java语言开发了自己的 ...

  9. 华为js面试题_华为C语言面试题最优思路及答案分享

    原标题:华为C语言面试题最优思路及答案分享 华为校招15道C语言面试题分享 用预处理指令#define 声明一个常数, 用以表明1年中有多少秒 (忽略闰年问题) 一 题 #defineSECONDS_ ...

最新文章

  1. 为Chrome多账户添加单独的快捷方式
  2. 科大星云诗社动态20210506
  3. ubuntu install redis/mongo
  4. One order save debug screenshot
  5. groovy 2.5.4_Java 7 vs Groovy 2.1性能比较
  6. 【优秀文章保存】webcollector抽取新闻正文
  7. thrift介绍及应用(二)—简单应用
  8. [洛谷P4052][JSOI2007]文本生成器
  9. 学习java.awt
  10. 想做出高级又好看的PPT,这9个技巧你别错过
  11. 计算机病毒 文章400字,身边的俗世奇人作文400字 - 中小学生作文网
  12. 刘德华郑秀文喜剧大片《魔幻厨房》DVD国语中字
  13. 6-2 折半查找 (15分)_数据结构实验7_羊卓的杨
  14. python自动评论_selenium+python 的微博自动转赞评功能实现
  15. 《金阁寺》金阁美之于幻想,我用摧毁它来成就其美
  16. ggsurvplot_combine R语言 一张图内画多条生存曲线
  17. Blizzard的MPQ文件格式搜索算法---来自Gameres bbs
  18. 超好玩的mac模拟经营游戏:巨型水族馆中文版
  19. RK3399 HDCP 2.2key
  20. 臧圩人:java面试题解惑系列(一)——类的初始化顺序学习笔记

热门文章

  1. Qt之C语言有符号数与无符号数运算
  2. virtual box 针对Unable to load R3 module 解决方案
  3. AndroidManifest.xml文件详解(receiver)
  4. 双语学习xml系列----之一 什么是xml?(第一小节)
  5. 用js实现改变随意改变div属性style的名称和值的结果
  6. 关于JavaScript中cookie的用法例子
  7. Linux基础(1)--Vim编辑器的常用命令
  8. mysql 从库relay_MySQL主库binlog(master-log)与从库relay-log关系代码详解
  9. C语言手写二叉树(链式存储结构)
  10. linux gdb 脚本,如何写gdb命令脚本