


Le javascript pur imite les compétences de jeu_javascript de masturbation de WeChat
N'oubliez pas de jouer à des jeux pour la Saint-Valentin chinoise ~ L'éditeur suivant a préparé un cadeau pour la Saint-Valentin pour tout le monde, un pur JavaScript imitant le jeu de masturbation WeChat à partager avec les amoureux du monde entier.
Tout d'abord, laissez-moi vous montrer les rendus :
Voir la démo Téléchargement du code source
Pure JavaScript imite le jeu de masturbation WeChat et l'utilise comme référence pour créer des mini-jeux Web. La conception de l'interface est de forme verticale pour imiter le style de l'écran du téléphone portable et l'effet de jeu est fluide. Il contient des statistiques de score. La classe du package JS comprend la création de classes d'avions, le contrôle du comportement des mouvements des avions, la création de classes de balles, la génération de nombres aléatoires entre min et max et le jugement si le propre avion sort de la limite. limite, annulez l'événement mousemove, au contraire, ajoutez l'événement mousemove, ajoutez un événement pause pour le bouton continuer de l'interface pause, créez la classe d'avion ennemi, déterminez la collision et terminez l'initialisation de l'interface, un pour le petit avion ennemi et un pour notre avion.
//Obtenir l'interface principale
var mainDiv=document.getElementById("maindiv");
//Obtenir l'interface de démarrage
var startdiv=document.getElementById("startdiv");
// Obtenir l'interface d'affichage des scores en jeu
var scorediv=document.getElementById("scorediv");
//Interface Obtenir des points
var scorelabel=document.getElementById("label");
//Obtenir l'interface pause
var suspenddiv=document.getElementById("suspenddiv");
//Obtenir l'interface de fin de jeu
var enddiv=document.getElementById("enddiv");
//Obtenez l'interface des statistiques de score après la fin du jeu
var planscore=document.getElementById("planscore");
//Initialiser le score
var scores=; <span style="color: #0000ff">/* 创建飞机类 */ </span>function plan(hp,X,Y,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ this.planX=X; this.planY=Y; this.imagenode=null; this.planhp=hp; this.planscore=score; this.plansizeX=sizeX; this.plansizeY=sizeY; this.planboomimage=boomimage; this.planisdie=false; this.plandietimes=; this.plandietime=dietime; this.plansudu=sudu; <span style="color: #0000ff">//行为 /* 移动行为 */ </span> this.planmove=function(){ if(scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else{ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } } this.init=function(){ this.imagenode=document.Element("img"); this.imagenode.style.left=this.planX+"px"; this.imagenode.style.top=this.planY+"px"; this.imagenode.src=imagesrc; mainDiv.appendChild(this.imagenode); } this.init(); } <span style="color: #0000ff">/* 创建子弹类 */ </span>function bullet(X,Y,sizeX,sizeY,imagesrc){ this.bulletX=X; this.bulletY=Y; this.bulletimage=null; this.bulletattach=; this.bulletsizeX=sizeX; this.bulletsizeY=sizeY; <span style="color: #0000ff">//行为 /* 移动行为 */ </span> this.bulletmove=function(){ this.bulletimage.style.top=this.bulletimage.offsetTop-+"px"; } this.init=function(){ this.bulletimage=document.Element("img"); this.bulletimage.style.left= this.bulletX+"px"; this.bulletimage.style.top= this.bulletY+"px"; this.bulletimage.src=imagesrc; mainDiv.appendChild(this.bulletimage); } this.init(); } <span style="color: #0000ff">/* 创建单行子弹类 */ </span>function oddbullet(X,Y){ bullet.call(this,X,Y,,,"image/bullet.png"); } <span style="color: #0000ff">/* 创建敌机类 */ </span> function enemy(hp,a,b,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ plan.call(this,hp,random(a,b),-,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc); } <span style="color: #0000ff">//产生min到max之间的随机数 </span> function random(min,max){ return Math.floor(min+Math.random()*(max-min)); } <span style="color: #0000ff">/* 创建本方飞机类 */ </span> function ourplan(X,Y){ var imagesrc="image/我的飞机.gif"; plan.call(this,,X,Y,,,,,,"image/本方飞机爆炸.gif",imagesrc); this.imagenode.setAttribute('id','ourplan'); } <span style="color: #0000ff">/* 创建本方飞机 */ </span> var selfplan=new ourplan(,); <span style="color: #0000ff">//移动事件 </span> var ourPlan=document.getElementById('ourplan'); var yidong=function(){ var oevent=window.event||arguments[]; var chufa=oevent.srcElement||oevent.target; var selfplanX=oevent.clientX-; var selfplanY=oevent.clientY; ourPlan.style.left=selfplanX-selfplan.plansizeX/+"px"; ourPlan.style.top=selfplanY-selfplan.plansizeY/+"px"; // document.getElementsByTagName('img')[].style.left=selfplanX-selfplan.plansizeX/+"px"; // document.getElementsByTagName('img')[]..style.top=selfplanY-selfplan.plansizeY/+"px"; } <span style="color: #0000ff">/* 暂停事件 */ </span>var number=; var zanting=function(){ if(number==){ suspenddiv.style.display="block"; if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); bodyobj.removeEventListener("mousemove",bianjie,true); } else if(document.detachEvent){ mainDiv.detachEvent("onmousemove",yidong); bodyobj.detachEvent("onmousemove",bianjie); } clearInterval(set); number=; } else{ suspenddiv.style.display="none"; if(document.addEventListener){ mainDiv.addEventListener("mousemove",yidong,true); bodyobj.addEventListener("mousemove",bianjie,true); } else if(document.attachEvent){ mainDiv.attachEvent("onmousemove",yidong); bodyobj.attachEvent("onmousemove",bianjie); } set=setInterval(start,); number=; } } <span style="color: #0000ff">//判断本方飞机是否移出边界,如果移出边界,则取消mousemove事件,反之加上mousemove事件 </span>var bianjie=function(){ var oevent=window.event||arguments[]; var bodyobjX=oevent.clientX; var bodyobjY=oevent.clientY; if(bodyobjX<||bodyobjX>||bodyobjY<||bodyobjY>){ if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); } else if(document.detachEvent){ mainDiv.detachEvent("onmousemove",yidong); } } else{ if(document.addEventListener){ mainDiv.addEventListener("mousemove",yidong,true); } else if(document.attachEvent){ mainDiv.attachEvent("nomousemove",yidong); } } }
//Pause de l'événement de redémarrage de l'interface
//function chongxinkaishi(){ // location.reload(true); // startdiv.style.display="none"; // maindiv.style.display="block"; //} var bodyobj=document.getElementsByTagName("body")[]; if(document.addEventListener){ <span style="color: #0000ff">//为本方飞机添加移动和暂停 </span> mainDiv.addEventListener("mousemove",yidong,true); <span style="color: #0000ff">//为本方飞机添加暂停事件 </span> selfplan.imagenode.addEventListener("click",zanting,true); <span style="color: #0000ff">//为body添加判断本方飞机移出边界事件 </span> bodyobj.addEventListener("mousemove",bianjie,true); <span style="color: #0000ff">//为暂停界面的继续按钮添加暂停事件 </span> suspenddiv.getElementsByTagName("button")[].addEventListener("click",zanting,true); // suspenddiv.getElementsByTagName("button")[].addEventListener("click",chongxinkaishi,true); <span style="color: #0000ff">//为暂停界面的返回主页按钮添加事件 </span> suspenddiv.getElementsByTagName("button")[].addEventListener("click",jixu,true); } else if(document.attachEvent){ <span style="color: #0000ff">//为本方飞机添加移动 </span> mainDiv.attachEvent("onmousemove",yidong); <span style="color: #0000ff">//为本方飞机添加暂停事件 </span> selfplan.imagenode.attachEvent("onclick",zanting); <span style="color: #0000ff"> //为body添加判断本方飞机移出边界事件 </span> bodyobj.attachEvent("onmousemove",bianjie); <span style="color: #0000ff">//为暂停界面的继续按钮添加暂停事件 </span> suspenddiv.getElementsByTagName("button")[].attachEvent("onclick",zanting); // suspenddiv.getElementsByTagName("button")[].attachEvent("click",chongxinkaishi,true); <span style="color: #0000ff">//为暂停界面的返回主页按钮添加事件</span> suspenddiv.getElementsByTagName("button")[].attachEvent("click",jixu,true); } <span style="color: #0000ff">//初始化隐藏本方飞机 </span>selfplan.imagenode.style.display="none"; <span style="color: #0000ff">/* 敌机对象数组 */ </span>var enemys=[]; <span style="color: #0000ff">/* 子弹对象数组 */ </span>var bullets=[]; var mark=; var mark=; var backgroundPositionY=; <span style="color: #0000ff">/* 开始函数 */ </span>function start(){ mainDiv.style.backgroundPositionY=backgroundPositionY+"px"; backgroundPositionY+=.; if(backgroundPositionY==){ backgroundPositionY=; } mark++; <span style="color: #0000ff">/* 创建敌方飞机 */ </span> if(mark==){ mark++; <span style="color: #0000ff"> //中飞机 </span> if(mark%==){ enemys.push(new enemy(,,,,,,,random(,),"image/中飞机爆炸.gif","image/enemy_fly_.png")); } <span style="color: #0000ff"> //大飞机 </span> if(mark==){ enemys.push(new enemy(,,,,,,,,"image/大飞机爆炸.gif","image/enemy_fly_.png")); mark=; } <span style="color: #0000ff">//小飞机 </span> else{ enemys.push(new enemy(,,,,,,,random(,),"image/小飞机爆炸.gif","image/enemy_fly_.png")); } mark=; } <span style="color: #0000ff">/* 移动敌方飞机 */ </span> var enemyslen=enemys.length; for(var i=;i<enemyslen;i++){ if(enemys[i].planisdie!=true){ enemys[i].planmove(); } <span style="color: #0000ff">/* 如果敌机超出边界,删除敌机 */ </span> if(enemys[i].imagenode.offsetTop>){ mainDiv.removeChild(enemys[i].imagenode); enemys.splice(i,); enemyslen--; } <span style="color: #0000ff">//当敌机死亡标记为true时,经过一段时间后清除敌机 </span> if(enemys[i].planisdie==true){ enemys[i].plandietimes+=; if(enemys[i].plandietimes==enemys[i].plandietime){ mainDiv.removeChild(enemys[i].imagenode); enemys.splice(i,); enemyslen--; } } } <span style="color: #0000ff">/* 创建子弹 */ </span> if(mark%==){ bullets.push(new oddbullet(parseInt(selfplan.imagenode.style.left)+,parseInt(selfplan.imagenode.style.top)-)); } <span style="color: #0000ff">/* 移动子弹 */ </span> var bulletslen=bullets.length; for(var i=;i<bulletslen;i++){ bullets[i].bulletmove(); <span style="color: #0000ff">/* 如果子弹超出边界,删除子弹 */ </span> if(bullets[i].bulletimage.offsetTop<){ mainDiv.removeChild(bullets[i].bulletimage); bullets.splice(i,); bulletslen--; } } <span style="color: #0000ff">/* 碰撞判断 */ </span> for(var k=;k<bulletslen;k++){ for(var j=;j<enemyslen;j++){ <span style="color: #0000ff">//判断碰撞本方飞机</span> if(enemys[j].planisdie==false){ if(enemys[j].imagenode.offsetLeft+enemys[j].plansizeX>=selfplan.imagenode.offsetLeft&&enemys[j].imagenode.offsetLeft<=selfplan.imagenode.offsetLeft+selfplan.plansizeX){ if(enemys[j].imagenode.offsetTop+enemys[j].plansizeY>=selfplan.imagenode.offsetTop+&&enemys[j].imagenode.offsetTop<=selfplan.imagenode.offsetTop-+selfplan.plansizeY){ <span style="color: #0000ff">//碰撞本方飞机,游戏结束,统计分数</span> selfplan.imagenode.src="image/本方飞机爆炸.gif"; enddiv.style.display="block"; planscore.innerHTML=scores; if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); bodyobj.removeEventListener("mousemove",bianjie,true); } else if(document.detachEvent){
Le code ci-dessus est simple. Il utilise du javascript pur pour imiter le jeu de masturbation WeChat. Il existait de nombreuses méthodes à cette époque.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...
