cari
Rumahhujung hadapan webtutorial jsBina permainan web dalam satu jam dengan Visual Studio dan ASP.NET

Bina permainan web dalam satu jam dengan Visual Studio dan ASP.NET

Artikel ini adalah sebahagian daripada siri pembangunan web dari Microsoft. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.

Artikel ini membincangkan:

    Falsafah Pembangunan Permainan Asas
  • menggunakan teknologi web untuk pembangunan permainan
  • Menambah Kawalan Permainan dan Ai
Teknologi yang dibincangkan:

    Visual Studio 2013 Pro, Visual Studio 2013 Komuniti, ASP.NET
  • muat turun kod (.zip)
Anda tidak memerlukan set kemahiran yang sama sekali baru untuk membangunkan permainan. Malah, kemahiran pembangunan web semasa anda di HTML, JavaScript, CSS dan sebagainya adalah baik untuk pelbagai permainan. Apabila anda membina permainan dengan teknologi web, ia akan berjalan dengan cukup banyak peranti dengan penyemak imbas.

Untuk membuktikan ini, saya akan menunjukkan membina permainan dari awal menggunakan teknologi web dan hanya dua perpustakaan luaran, dan saya akan melakukannya dalam masa kurang dari satu jam. Saya akan merangkumi pelbagai topik pembangunan permainan, dari reka bentuk asas dan susun atur, kawalan dan sprite, kepada kecerdasan buatan (AI) untuk lawan yang mudah. Saya juga akan membangunkan permainan supaya ia berfungsi pada PC, tablet dan telefon pintar. Jika anda mempunyai pengalaman dengan pengaturcaraan sebagai pemaju web atau domain pembangunan lain, tetapi tidak ada pengalaman menulis permainan, artikel ini akan membuat anda bermula. Sekiranya anda memberi saya satu jam, saya berjanji untuk menunjukkan kepada anda tali.

Takeaways Key

Saya akan melakukan semua pembangunan di Visual Studio, yang akan membolehkan pelaksanaan aplikasi web yang cepat ketika saya membuat perubahan. Pastikan anda mempunyai versi terkini Visual Studio supaya anda boleh mengikuti. Saya menggunakan Visual Studio 2013 Pro, tetapi mengemas kini kod dengan komuniti Visual Studio 2013. Juga jika anda mempunyai Mac atau Linux, kod Visual Studio tersedia pada masa kini.

Aplikasi ini tidak memerlukan kod pelayan, jadi saya mulakan dengan membuat projek laman web yang baru dan kosong di Visual Studio. Saya akan menggunakan template C# kosong untuk laman web dengan memilih pilihan C# Visual selepas memilih Fail | Baru | Asp.net laman web kosong.

Fail HTML Indeks memerlukan hanya tiga sumber: jQuery, lembaran gaya utama dan fail JavaScript utama. Saya menambah fail CSS kosong ke projek yang dipanggil Style.css dan fail JavaScript kosong yang dipanggil ping.js untuk mengelakkan kesilapan apabila memuatkan halaman:

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>  <span><span><span><script> src<span >="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><script> src<span >="ping.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><link> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span>
</span></span></span></span></span></span>

Juga jangan lupa untuk menguji aplikasi ini (atau yang lain) untuk perkara itu di seluruh pelayar & peranti. Walaupun kod yang saya tulis adalah saling beroperasi dengan pelayar moden seperti Chrome, Firefox, dan Microsoft Edge, ia sentiasa menjadi amalan terbaik untuk menyemak semula. Sekarang anda boleh melakukannya dengan mesin maya percuma dan alat lain seperti http://www.browserstack.com.

reka bentuk asas

Permainan yang saya bina adalah variasi pong yang saya panggil ping. Ping pada dasarnya mempunyai peraturan yang sama seperti Pong, kecuali bahawa pemain mana -mana pemain merebut bola ketika datang kepada mereka dan kemudian dapat membakar bola sama ada secara langsung atau pada sudut atas atau ke bawah. Selalunya terbaik untuk menarik bagaimana anda ingin permainan melihat sebelum anda membinanya. Untuk permainan ini, susun atur keseluruhan yang saya mahu lihat ditunjukkan di bawah.

Bina permainan web dalam satu jam dengan Visual Studio dan ASP.NET

Sebaik sahaja saya telah membangunkan susun atur reka bentuk permainan, ia hanya satu perkara untuk menambah setiap elemen ke HTML untuk membina permainan. Walau bagaimanapun, satu perkara yang perlu diperhatikan ialah saya akan mengumpulkan papan skor dan kawalan untuk memastikan mereka duduk bersama. Jadi satu demi satu, anda dapat melihat saya telah menambah unsur -unsur, seperti yang ditunjukkan di bawah:

<span><span><span><div> id<span>="arena"</span>>
  <span><span><span><div> id<span>="score"</span>>
    <span><span><span><h1 id="gt">></h1></span>
</span>      <span><span><span><span> id<span>="playerScore"</span>></span>0<span><span></span></span>></span>
</span>     <span><span><span><span> id<span>="opponentScore"</span>></span>0<span><span></span></span>></span>
</span>   <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="player"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="opponent"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="ball"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="controls-left"</span>>
   <span><span><span><div> id<span>="up"</span>><span><span></span></span>
</div></span>></span>
</span>   <span><span><span><div> id<span>="down"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="controls-right"</span>>
    <span><span><span><div> id<span>="left"</span>><span><span></span></span>
</div></span>></span>
</span>    <span><span><span><div> id<span>="right"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Main dengan gaya

Jika anda memuatkan halaman ini, anda tidak akan melihat apa -apa kerana tidak ada gaya yang digunakan. Saya sudah menyediakan pautan ke fail main.css di HTML saya, jadi saya akan meletakkan semua CSS saya dalam fail baru dengan nama itu. Perkara pertama yang akan saya lakukan ialah meletakkan segala -galanya di skrin. Badan halaman perlu mengambil keseluruhan skrin, jadi saya akan menetapkannya terlebih dahulu:

<span>body {
</span>  <span>margin: 0px;
</span>  <span>height: 100%;
</span><span>}
</span>

kedua, saya perlu mempunyai arena mengisi keseluruhan skrin dengan imej latar belakang arena (lihat imej di bawah) Digunakan:

<span><span>#arena</span> {
</span>  <span>background-image: <span>url(arena.png)</span>;
</span>  <span>background-size: 100% 100%;
</span>  <span>margin: 0px;
</span>  <span>width: 100%;
</span>  <span>height: 100%;
</span>  <span>overflow: hidden;
</span><span>}
</span>
Bina permainan web dalam satu jam dengan Visual Studio dan ASP.NET

Seterusnya, saya akan meletakkan papan skor. Saya mahu ini muncul di atas dan pusat, melalui unsur -unsur lain. Kedudukan Perintah: Mutlak membolehkan saya meletakkannya di mana sahaja saya mahu dan meninggalkan: 50% meletakkannya di bahagian atas tingkap, tetapi bermula di bahagian paling kiri elemen papan skor. Untuk memastikan ia berpusat dengan sempurna, saya menggunakan harta transformasi dan harta z-indeks memastikan ia sentiasa berada di bahagian atas:

<span><span>#score</span> {
</span>  <span>position: absolute;
</span>  <span>z-index: 1000;
</span>  <span>left: 50%;
</span>  <span>top: 5%;
</span>  <span>transform: translate(-50%, 0%);
</span><span>}
</span>

Saya juga mahu fon teks menjadi bertema retro. Pelayar yang paling moden membolehkan saya memasukkan fon saya sendiri. Saya dapati fon permulaan akhbar yang sesuai 2P dari CodeMan38 (zon38.net). Untuk menambah fon ke papan skor, saya perlu membuat wajah fon baru:

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>  <span><span><span><script> src<span >="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><script> src<span >="ping.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><link> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span>
</span></span></span></span></span></span>

Sekarang, skor berada dalam tag H1, jadi saya boleh menetapkan font untuk semua tag H1. Sekiranya font hilang, saya akan menyediakan beberapa pilihan sandaran:

<span><span><span><div> id<span>="arena"</span>>
  <span><span><span><div> id<span>="score"</span>>
    <span><span><span><h1 id="gt">></h1></span>
</span>      <span><span><span><span> id<span>="playerScore"</span>></span>0<span><span></span></span>></span>
</span>     <span><span><span><span> id<span>="opponentScore"</span>></span>0<span><span></span></span>></span>
</span>   <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="player"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="opponent"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="ball"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="controls-left"</span>>
   <span><span><span><div> id<span>="up"</span>><span><span></span></span>
</div></span>></span>
</span>   <span><span><span><div> id<span>="down"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="controls-right"</span>>
    <span><span><span><div> id<span>="left"</span>><span><span></span></span>
</div></span>></span>
</span>    <span><span><span><div> id<span>="right"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Untuk unsur -unsur lain, saya akan menggunakan lembaran imej sprite. Lembaran sprite mengandungi semua imej yang saya perlukan untuk permainan dalam satu fail (lihat imej di bawah).

Bina permainan web dalam satu jam dengan Visual Studio dan ASP.NET

Mana -mana elemen yang mempunyai imej pada helaian ini akan mempunyai kelas Sprite yang diberikan. Kemudian, untuk setiap elemen, saya akan menggunakan kedudukan latar belakang untuk menentukan bahagian lembaran sprite yang saya ingin tunjukkan:

<span>body {
</span>  <span>margin: 0px;
</span>  <span>height: 100%;
</span><span>}
</span>

Seterusnya, saya akan menambah kelas Sprite ke semua elemen yang akan menggunakan lembaran sprite. Saya perlu melompat kembali ke HTML untuk melakukan ini:

<span><span>#arena</span> {
</span>  <span>background-image: <span>url(arena.png)</span>;
</span>  <span>background-size: 100% 100%;
</span>  <span>margin: 0px;
</span>  <span>width: 100%;
</span>  <span>height: 100%;
</span>  <span>overflow: hidden;
</span><span>}
</span>

Sekarang saya perlu menunjukkan kedudukan setiap sprite pada helaian untuk setiap elemen. Sekali lagi, saya akan melakukan ini menggunakan kedudukan latar belakang:

<span><span>#score</span> {
</span>  <span>position: absolute;
</span>  <span>z-index: 1000;
</span>  <span>left: 50%;
</span>  <span>top: 5%;
</span>  <span>transform: translate(-50%, 0%);
</span><span>}
</span>

Kedudukan: Harta mutlak pada pemain, lawan dan bola akan membiarkan saya memindahkan mereka ke JavaScript. Jika anda melihat halaman sekarang, anda akan melihat kawalan dan bola mempunyai kepingan yang tidak perlu yang dilampirkan kepada mereka. Ini kerana saiz sprite lebih kecil daripada 128 piksel lalai, jadi saya akan menyesuaikannya dengan saiz yang betul. Hanya ada satu bola, jadi saya akan menetapkan saiznya secara langsung:

<span><span>@font-face</span> {
</span>  <span>font-family: 'PressStart2P';
</span>  <span>src: <span>url('PressStart2P.woff')</span>;
</span><span>}
</span>

Terdapat empat elemen kawalan (butang pengguna boleh menekan untuk memindahkan pemain), jadi saya membuat saya membuat kelas khas untuk mereka. Saya juga akan menambah margin supaya mereka mempunyai sedikit ruang di sekeliling mereka:

<span>h1 {
</span>  <span>font-family: 'PressStart2P', 'Georgia', serif;
</span><span>}
</span>

Setelah menambah kelas ini, permainan ini mempunyai kawalan yang lebih baik:

<span><span>.sprite</span> {
</span>  <span>background-image: <span>url("sprites.png")</span>;
</span>  <span>width: 128px;
</span>  <span>height: 128px;
</span><span>}
</span>

Perkara terakhir yang perlu saya lakukan ialah meletakkan kawalan supaya mereka oleh ibu jari pengguna apabila halaman berjalan pada peranti mudah alih. Saya akan melekatkan mereka ke sudut bawah:

<span><span><span><div> id<span>="player"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="opponent"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="ball"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="controls-left"</span>>
  <span><span><span><div> id<span>="up"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="down"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="controls-right"</span>>
  <span><span><span><div> id<span>="left"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="right"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Satu perkara yang baik mengenai reka bentuk ini adalah semuanya ditetapkan dengan kedudukan relatif. Ini bermakna skrin boleh menjadi beberapa saiz yang berbeza semasa masih membuat permainan kelihatan baik.

ikuti bola melantun

Sekarang saya akan membuat bola bergerak. Untuk kod JavaScript, saya telah merujuk fail yang dipanggil ping.js dalam html, seperti yang saya lakukan dengan CSS. Saya akan menambah kod ini ke fail baru dengan nama itu. Saya akan membuat objek untuk bola dan setiap pemain, tetapi saya akan menggunakan corak kilang untuk objek.

Ini adalah konsep yang mudah. Fungsi bola mencipta bola baru apabila anda memanggilnya. Tidak perlu menggunakan kata kunci baru. Corak ini mengurangkan beberapa kekeliruan di sekitar pembolehubah ini dengan menjelaskan sifat objek yang tersedia. Dan kerana saya hanya mempunyai satu jam untuk membuat permainan ini, saya perlu meminimumkan konsep yang mengelirukan.

struktur corak ini, kerana saya membuat kelas bola mudah:

<span><span>#player</span> {
</span>  <span>position: absolute;
</span>  <span>background-position: 0px 128px;
</span><span>}
</span><span><span>#opponent</span> {
</span>  <span>position: absolute;
</span>  <span>background-position: 0px 0px;
</span><span>}
</span><span><span>#ball</span> {
</span>  <span>position: absolute;
</span>  <span>background-position: 128px 128px;
</span><span>}
</span><span><span>#right</span> {
</span>  <span>background-position: 64px 192px;
</span><span>}
</span><span><span>#left</span> {
</span>  <span>background-position: 64px 0px;
</span><span>}
</span><span><span>#down</span> {
</span>  <span>background-position: 128px 192px;
</span><span>}
</span><span><span>#up</span> {
</span>  <span>background-position: 128px 0px;
</span><span>}
</span>

Untuk membuat bola baru, saya hanya panggil fungsi ini yang telah saya tentukan:

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>  <span><span><span><script> src<span >="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><script> src<span >="ping.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><link> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span>
</span></span></span></span></span></span>

Sekarang saya mahu membuat bola bergerak dan melantun di sekitar skrin. Pertama, saya perlu memanggil fungsi kemas kini pada beberapa selang untuk membuat animasi bola. Pelayar moden menyediakan fungsi yang dimaksudkan untuk tujuan ini yang dipanggil RequestAnimationFrame. Ini memerlukan fungsi sebagai hujah, dan akan memanggil fungsi lulus pada kali berikutnya ia menjalankan kitaran animasinya. Ini membolehkan bola bergerak dalam langkah -langkah lancar apabila penyemak imbas siap untuk kemas kini. Apabila ia memanggil fungsi lulus, ia akan memberikan masa dalam beberapa saat sejak halaman dimuatkan. Ini penting untuk memastikan animasi adalah konsisten dari masa ke masa. Dalam permainan, penggunaan RequestAnimationFrame muncul seperti berikut:

<span><span><span><div> id<span>="arena"</span>>
  <span><span><span><div> id<span>="score"</span>>
    <span><span><span><h1 id="gt">></h1></span>
</span>      <span><span><span><span> id<span>="playerScore"</span>></span>0<span><span></span></span>></span>
</span>     <span><span><span><span> id<span>="opponentScore"</span>></span>0<span><span></span></span>></span>
</span>   <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="player"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="opponent"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="ball"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="controls-left"</span>>
   <span><span><span><div> id<span>="up"</span>><span><span></span></span>
</div></span>></span>
</span>   <span><span><span><div> id<span>="down"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="controls-right"</span>>
    <span><span><span><div> id<span>="left"</span>><span><span></span></span>
</div></span>></span>
</span>    <span><span><span><div> id<span>="right"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Perhatikan bahawa RequestAnimationFrame dipanggil lagi dalam fungsi, kerana bola telah selesai mengemaskini. Ini memastikan animasi berterusan.

Walaupun kod ini akan berfungsi, mungkin ada masalah di mana skrip bermula sebelum halaman dimuatkan sepenuhnya. Untuk mengelakkan ini, saya akan memulakan kod apabila halaman dimuatkan, menggunakan jQuery:

<span>body {
</span>  <span>margin: 0px;
</span>  <span>height: 100%;
</span><span>}
</span>

Kerana saya tahu kelajuan bola (halaju) dan masa sejak kemas kini terakhirnya, saya dapat melakukan beberapa fizik mudah untuk menggerakkan bola ke hadapan:

<span><span>#arena</span> {
</span>  <span>background-image: <span>url(arena.png)</span>;
</span>  <span>background-size: 100% 100%;
</span>  <span>margin: 0px;
</span>  <span>width: 100%;
</span>  <span>height: 100%;
</span>  <span>overflow: hidden;
</span><span>}
</span>

Cuba menjalankan kod dan anda akan melihat bola bergerak pada sudut dan di luar skrin. Ini menyeronokkan untuk satu saat, tetapi apabila bola keluar dari tepi skrin, keseronokan berhenti. Oleh itu, langkah seterusnya adalah untuk membuat bola melantun dari tepi skrin, seperti yang dilaksanakan dalam Rajah 7. Tambahkan kod ini dan menjalankan aplikasi akan menunjukkan bola yang terus memantul.

pemain yang boleh bergerak

Sekarang sudah tiba masanya untuk membuat objek pemain. Langkah pertama dalam fleshing kelas pemain adalah untuk membuat fungsi bergerak mengubah kedudukan pemain. Pembolehubah sampingan akan menunjukkan sisi mana mahkamah pemain akan tinggal, yang akan menentukan cara meletakkan pemain secara mendatar. Nilai Y, yang diluluskan ke dalam fungsi bergerak, akan menjadi berapa banyak atau ke bawah pemain akan bergerak:

<span><span>#score</span> {
</span>  <span>position: absolute;
</span>  <span>z-index: 1000;
</span>  <span>left: 50%;
</span>  <span>top: 5%;
</span>  <span>transform: translate(-50%, 0%);
</span><span>}
</span>

kita kemudian boleh meletakkan pergerakan pemain, menghentikan gerakan jika pemain sprite mencapai bahagian atas atau bawah tingkap.

<span><span>@font-face</span> {
</span>  <span>font-family: 'PressStart2P';
</span>  <span>src: <span>url('PressStart2P.woff')</span>;
</span><span>}
</span>

Saya kini boleh membuat dua pemain dan memajukan mereka ke sisi yang sesuai dari skrin:

<span>h1 {
</span>  <span>font-family: 'PressStart2P', 'Georgia', serif;
</span><span>}
</span>

input papan kekunci

Jadi dalam teori anda boleh memindahkan pemain, tetapi ia tidak akan bergerak tanpa arahan. Tambah beberapa kawalan kepada pemain di sebelah kiri. Anda mahukan dua cara untuk mengawal pemain itu: menggunakan papan kekunci (pada PCS) dan mengetuk kawalan (pada tablet dan telefon).

Untuk memastikan konsistensi antara input sentuhan dan input tetikus pada pelbagai platform, saya akan menggunakan kerangka penyatuan yang hebat Hand.js (handjs.codeplex.com). Pertama, saya akan menambah skrip ke HTML di bahagian kepala:

<span><span>.sprite</span> {
</span>  <span>background-image: <span>url("sprites.png")</span>;
</span>  <span>width: 128px;
</span>  <span>height: 128px;
</span><span>}
</span>

Saya kemudian akan menggunakan Hand.js dan jQuery untuk mengawal pemain apabila anda menekan kekunci papan kekunci A dan Z, atau apabila anda mengetuk kawalan.

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>  <span><span><span><script> src<span >="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><script> src<span >="ping.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><link> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span>
</span></span></span></span></span></span>

Tangkap bola

Ketika bola melantun, saya ingin membiarkan pemain menangkapnya. Apabila ia ditangkap, bola mempunyai pemilik, dan ia mengikuti gerakan pemilik itu. Saya akan menambah fungsi ke kaedah langkah bola, yang membolehkan pemilik, yang mana bola kemudian akan mengikuti:

<span><span><span><div> id<span>="arena"</span>>
  <span><span><span><div> id<span>="score"</span>>
    <span><span><span><h1 id="gt">></h1></span>
</span>      <span><span><span><span> id<span>="playerScore"</span>></span>0<span><span></span></span>></span>
</span>     <span><span><span><span> id<span>="opponentScore"</span>></span>0<span><span></span></span>></span>
</span>   <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="player"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="opponent"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="ball"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="controls-left"</span>>
   <span><span><span><div> id<span>="up"</span>><span><span></span></span>
</div></span>></span>
</span>   <span><span><span><div> id<span>="down"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="controls-right"</span>>
    <span><span><span><div> id<span>="left"</span>><span><span></span></span>
</div></span>></span>
</span>    <span><span><span><div> id<span>="right"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Pada masa ini, tidak ada cara untuk mendapatkan kedudukan objek pemain, jadi saya akan menambah getPosition dan getSide aksesor ke objek pemain:

<span>body {
</span>  <span>margin: 0px;
</span>  <span>height: 100%;
</span><span>}
</span>

Sekarang, jika bola mempunyai pemilik, ia akan mengikuti pemilik itu. Tetapi bagaimana saya menentukan pemiliknya? Seseorang perlu menangkap bola. Mari kita tentukan apabila salah satu pemain sprite menyentuh bola. Apabila itu berlaku, saya akan menetapkan pemilik bola kepada pemain itu.

<span><span>#arena</span> {
</span>  <span>background-image: <span>url(arena.png)</span>;
</span>  <span>background-size: 100% 100%;
</span>  <span>margin: 0px;
</span>  <span>width: 100%;
</span>  <span>height: 100%;
</span>  <span>overflow: hidden;
</span><span>}
</span>

Jika anda cuba bermain permainan sekarang, anda akan mendapati bola melantun dari bahagian atas skrin, dan anda boleh memindahkan pemain untuk menangkapnya. Sekarang, bagaimana anda membuangnya? Itulah yang kawalan kanan adalah untuk-menafikan bola. Mari tambahkan fungsi "api" kepada pemain, serta harta matlamat.

<span><span>#score</span> {
</span>  <span>position: absolute;
</span>  <span>z-index: 1000;
</span>  <span>left: 50%;
</span>  <span>top: 5%;
</span>  <span>transform: translate(-50%, 0%);
</span><span>}
</span>

kita kemudian boleh menambah fungsi papan kekunci untuk menetapkan fungsi tujuan dan kebakaran pemain. Matlamat akan berfungsi sedikit berbeza. Apabila Kunci Aiming dikeluarkan, matlamatnya akan kembali ke arah langsung.

<span><span>@font-face</span> {
</span>  <span>font-family: 'PressStart2P';
</span>  <span>src: <span>url('PressStart2P.woff')</span>;
</span><span>}
</span>

Penambahan akhir akan menjadi sokongan sentuhan pada semua kawalan. Saya akan membuat kawalan pada perubahan yang betul tujuan pemain. Saya juga akan membuatnya menyentuh mana -mana sahaja di skrin memadamkan bola:

<span>h1 {
</span>  <span>font-family: 'PressStart2P', 'Georgia', serif;
</span><span>}
</span>

Simpan skor

Apabila bola melewati pemain, saya mahu menukar skor dan memberikan bola kepada pemain itu. Saya akan menggunakan peristiwa tersuai supaya saya dapat memisahkan pemarkahan dari mana -mana objek yang ada. Fungsi kemas kini semakin lama, jadi saya akan menambah fungsi peribadi baru yang dipanggil checkscored:

<span><span>.sprite</span> {
</span>  <span>background-image: <span>url("sprites.png")</span>;
</span>  <span>width: 128px;
</span>  <span>height: 128px;
</span><span>}
</span>

Kod di bawah bertindak balas terhadap peristiwa tersebut untuk mengemas kini skor dan menyerahkan bola. Tambahkan kod ini ke bahagian bawah dokumen JavaScript.

<span><span><span><div> id<span>="player"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="opponent"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="ball"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="controls-left"</span>>
  <span><span><span><div> id<span>="up"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="down"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span><div> id<span>="controls-right"</span>>
  <span><span><span><div> id<span>="left"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="right"</span> class<span>="sprite"</span>><span><span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Sekarang apabila bola membuatnya melepasi lawan anda (yang tidak begitu sukar, kerana lawan tidak bergerak) skor anda akan naik, dan bola akan diserahkan kepada lawan. Walau bagaimanapun, lawan hanya akan memegang bola.

Dapatkan Smart

anda hampir mempunyai permainan. Sekiranya anda mempunyai seseorang yang akan bermain. Sebagai langkah terakhir, saya akan menunjukkan cara mengawal lawan dengan AI yang mudah. Lawan akan cuba untuk tetap selari dengan bola ketika ia bergerak. Jika lawan menangkap bola, ia akan bergerak secara rawak dan api bola dalam arah rawak. Untuk membuat AI berasa sedikit lebih manusia, saya akan menambah kelewatan dalam segala yang dilakukan. Ini bukan AI yang sangat pintar, fikiran anda, tetapi ia akan menjadi sesuatu untuk bermain permainan.

Apabila merancang sistem seperti ini, adalah baik untuk berfikir di negeri -negeri. Lawan AI mempunyai tiga negeri yang mungkin: mengikuti, mensasarkan/menembak dan menunggu. Saya akan menjadi negeri antara tindakan berikut untuk menambah unsur yang lebih manusia. Mulakan dengan itu untuk objek AI:

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>  <span><span><span><script> src<span >="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><script> src<span >="ping.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span><link> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span>
</span></span></span></span></span></span>

Bergantung pada keadaan AI, saya mahu ia melakukan tindakan yang berbeza. Sama seperti bola, saya akan membuat fungsi kemas kini yang boleh saya panggil di RequestAnimationFrame untuk bertindak AI mengikut keadaannya:

<span><span><span><div> id<span>="arena"</span>>
  <span><span><span><div> id<span>="score"</span>>
    <span><span><span><h1 id="gt">></h1></span>
</span>      <span><span><span><span> id<span>="playerScore"</span>></span>0<span><span></span></span>></span>
</span>     <span><span><span><span> id<span>="opponentScore"</span>></span>0<span><span></span></span>></span>
</span>   <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="player"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="opponent"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="ball"</span>><span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> id<span>="controls-left"</span>>
   <span><span><span><div> id<span>="up"</span>><span><span></span></span>
</div></span>></span>
</span>   <span><span><span><div> id<span>="down"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span>  <span><span><span><div> id<span>="controls-right"</span>>
    <span><span><span><div> id<span>="left"</span>><span><span></span></span>
</div></span>></span>
</span>    <span><span><span><div> id<span>="right"</span>><span><span></span></span>
</div></span>></span>
</span>  <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>

Keadaan berikut adalah mudah. Lawan bergerak ke arah menegak bola, dan peralihan AI ke keadaan menunggu untuk menyuntik beberapa masa reaksi yang perlahan. Kod di bawah menunjukkan kedua -dua negeri ini:

<span>body {
</span>  <span>margin: 0px;
</span>  <span>height: 100%;
</span><span>}
</span>

AI bergantian antara harus mengikuti bola dan tunggu detik berpecah. Sekarang tambahkan kod ke fungsi kemas kini seluruh permainan:

<span><span>#arena</span> {
</span>  <span>background-image: <span>url(arena.png)</span>;
</span>  <span>background-size: 100% 100%;
</span>  <span>margin: 0px;
</span>  <span>width: 100%;
</span>  <span>height: 100%;
</span>  <span>overflow: hidden;
</span><span>}
</span>

Apabila anda menjalankan permainan, anda akan melihat lawan mengikuti pergerakan bola -bukan AI yang buruk dalam kurang daripada 30 baris kod. Sudah tentu, jika lawan menangkap bola, ia tidak akan melakukan apa -apa. Oleh itu, untuk helah terakhir jam itu, sudah tiba masanya untuk mengendalikan tindakan untuk keadaan yang bertujuan.

Saya mahu AI bergerak secara rawak beberapa kali dan kemudian api bola ke arah rawak. Mari tambahkan fungsi peribadi yang hanya itu. Menambah fungsi Aimandfire ke pernyataan kes yang mensasarkan menjadikan AI berfungsi sepenuhnya untuk dimainkan.

<span><span>#score</span> {
</span>  <span>position: absolute;
</span>  <span>z-index: 1000;
</span>  <span>left: 50%;
</span>  <span>top: 5%;
</span>  <span>transform: translate(-50%, 0%);
</span><span>}
</span>

membungkus

Sekarang, anda mempunyai permainan web penuh yang berfungsi pada PC, telefon pintar dan tablet. Terdapat banyak kemungkinan penambahbaikan untuk permainan ini. Ia akan kelihatan sedikit janggal dalam mod potret pada telefon pintar, contohnya, jadi anda perlu memastikan anda memegang telefon dalam landskap untuk berfungsi dengan baik. Ini hanyalah demonstrasi kecil kemungkinan untuk pembangunan permainan untuk web dan seterusnya.

Terima kasih kepada pakar teknikal Mohamed Ameen Ibrahim kerana mengkaji artikel ini.

lebih banyak tangan dengan JavaScript

Artikel ini adalah sebahagian daripada Siri Pembangunan Web dari Microsoft Tech Evangelists mengenai pembelajaran praktikal JavaScript, projek sumber terbuka, dan amalan terbaik interoperabilitas termasuk pelayar Microsoft Edge dan enjin rendering EdgeHTML yang baru.

Kami menggalakkan anda untuk menguji penyemak imbas dan peranti termasuk Microsoft Edge - penyemak imbas lalai untuk Windows 10 - dengan alat percuma di dev.modern.ie:

  • Imbas laman web anda untuk perpustakaan, isu susun atur, dan kebolehcapaian
  • Gunakan mesin maya untuk Mac, Linux, dan Windows
  • Ujian jauh untuk Microsoft Edge pada peranti anda sendiri
  • Makmal Pengekodan pada GitHub: Ujian Salib dan Amalan Terbaik

Pembelajaran teknologi mendalam di Microsoft Edge dan platform web dari jurutera dan penginjil kami:

  • Sidang Kemuncak Web Microsoft Edge 2015 (Apa yang Harapan dengan Pelayar Baru, Piawaian Platform Web yang baru, dan penceramah tetamu dari komuniti JavaScript)
  • woah, saya boleh menguji kelebihan & iaitu pada mac & linux! (dari Rey Bango)
  • memajukan JavaScript tanpa melanggar web (dari Christian Heilmann)
  • enjin rendering tepi yang menjadikan web hanya berfungsi (dari Jacob Rossi)
  • melepaskan rendering 3D dengan webgl (dari David Catuhe termasuk projek Vorlon.js dan Babylonjs)
  • Aplikasi web yang dihoskan dan inovasi platform web (dari Kevin Hill dan Kiril Seksenov termasuk projek manifold.js)

lebih banyak alat & sumber silang platform percuma untuk platform web:

  • kod studio visual untuk linux, macOS, dan windows
  • kod dengan node.js dan percubaan percuma di Azure

Soalan Lazim (Soalan Lazim) Mengenai Membina Permainan Web dengan Visual Studio dan ASP.NET

Bagaimana saya boleh membuat permainan multiplayer menggunakan Visual Studio dan ASP.NET? Pertama, anda perlu merancang logik permainan, termasuk peraturan, interaksi pemain, dan hasil permainan. Seterusnya, anda perlu membuat antara muka pengguna permainan menggunakan HTML, CSS, dan JavaScript. Anda boleh menggunakan perpustakaan SignalR di ASP.NET untuk mengendalikan komunikasi masa nyata antara pelayan dan pelanggan. Akhirnya, anda perlu melaksanakan logik permainan di sisi pelayan menggunakan C# dan ASP.NET. Ini melibatkan pengendalian sambungan pemain, menguruskan keadaan permainan, dan kemas kini penyiaran kepada semua pelanggan yang bersambung.

Apakah amalan terbaik untuk pembangunan permainan di Visual Studio? Studio termasuk menggunakan corak Model-View-Controller (MVC) untuk memisahkan logik permainan dari antara muka pengguna, menggunakan rangka entiti untuk akses data, dan menggunakan ujian unit untuk memastikan ketepatannya kod anda. Di samping itu, anda harus menggunakan alat debugging terbina dalam Visual Studio untuk mengenal pasti dan memperbaiki pepijat dalam kod anda. Anda boleh membangunkan permainan mudah alih dengan Visual Studio dan ASP.NET. Walau bagaimanapun, penting untuk diperhatikan bahawa ASP.NET adalah terutamanya kerangka pembangunan web, jadi anda perlu menggunakan alat dan perpustakaan tambahan untuk membuat permainan mudah alih. Xamarin, alat pembangunan silang platform yang disertakan dengan Visual Studio, membolehkan anda menulis kod permainan anda di C# dan kemudian menyusunnya untuk Android, iOS, dan Windows Phone.

Bagaimana saya boleh mengoptimumkan prestasi permainan saya di Visual Studio?

Terdapat beberapa cara untuk mengoptimumkan prestasi permainan anda di Visual Studio. Pertama, anda harus menggunakan alat profil terbina dalam untuk mengenal pasti kesesakan dalam kod anda. Seterusnya, anda boleh menggunakan teknik seperti pengoptimuman kod, pengoptimuman struktur data, dan pengoptimuman algoritma untuk meningkatkan prestasi kod anda. Di samping itu, anda harus menggunakan ciri pecutan perkakasan kad grafik moden untuk meningkatkan prestasi rendering permainan anda. Kesan bunyi dan muzik ke permainan anda di Visual Studio melibatkan menggunakan kelas SoundPlayer di ruang nama System.Media. Anda boleh menggunakan kaedah main untuk memainkan kesan bunyi atau trek muzik, dan kaedah berhenti untuk berhenti bermain bunyi. Anda juga boleh menggunakan kaedah playlooping untuk memainkan bunyi secara berterusan. Kelas SoundPlayer menyokong fail WAV, jadi anda perlu menukar kesan bunyi dan trek muzik anda ke format ini. Dibangunkan di Visual Studio melibatkan beberapa langkah. Pertama, anda perlu membina permainan anda dalam mod pelepasan untuk membuat fail yang boleh dilaksanakan. Seterusnya, anda perlu membuat pemasang untuk permainan anda menggunakan alat seperti InstallShield. Akhirnya, anda boleh mengedarkan permainan anda melalui pelbagai saluran, seperti laman web anda sendiri, kedai permainan dalam talian, atau kedai aplikasi. > Walaupun mungkin untuk membangunkan permainan 3D menggunakan Visual Studio dan ASP.NET, ia bukan kes penggunaan yang paling biasa untuk alat ini. ASP.NET adalah terutamanya rangka kerja pembangunan web, dan Visual Studio adalah persekitaran pembangunan tujuan umum. Jika anda berminat untuk membangunkan permainan 3D, anda mungkin ingin mempertimbangkan menggunakan enjin pembangunan permainan yang berdedikasi seperti Unity atau Unreal Engine, yang menyediakan alat dan ciri yang lebih maju untuk pembangunan permainan 3D. -Pelala sokongan kepada permainan saya di Visual Studio?

Menambah sokongan pelbagai bahasa ke permainan anda di Visual Studio melibatkan menggunakan ciri penyetempatan ASP.NET. Anda boleh menggunakan fail sumber untuk menyimpan teks untuk setiap bahasa, dan kemudian gunakan kelas ResourceManager untuk mendapatkan teks yang sesuai berdasarkan tetapan bahasa pengguna. Anda juga boleh menggunakan kelas CultureInfo untuk mengendalikan perbezaan dalam format nombor, format tarikh, dan tetapan khusus locale yang lain. Visual Studio melibatkan menggunakan alat ujian terbina dalam. Anda boleh menggunakan ujian unit untuk menguji komponen individu permainan anda, ujian integrasi untuk menguji bagaimana komponen ini berfungsi bersama -sama, dan ujian UI untuk menguji antara muka pengguna. Anda juga boleh menggunakan alat penyahpepijatan di Visual Studio untuk mengenal pasti dan memperbaiki pepijat dalam kod anda.

Bolehkah saya menggunakan Visual Studio dan Asp.net untuk membangunkan permainan untuk konsol? alat. Pembangunan permainan konsol biasanya melibatkan menggunakan enjin pembangunan permainan yang berdedikasi seperti Unity atau Unreal Engine, yang menyediakan alat dan ciri yang lebih maju untuk pembangunan permainan konsol. Walau bagaimanapun, anda boleh menggunakan Visual Studio dan ASP.NET untuk membangunkan komponen-komponen pelayan permainan konsol, seperti perkhidmatan pembuatan jodoh berbilang pemain atau sistem pendahulu.

Atas ialah kandungan terperinci Bina permainan web dalam satu jam dengan Visual Studio dan ASP.NET. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Ganti aksara rentetan dalam javascriptGanti aksara rentetan dalam javascriptMar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Tutorial Persediaan API Carian Google CustomTutorial Persediaan API Carian Google CustomMar 04, 2025 am 01:06 AM

Tutorial ini menunjukkan kepada anda bagaimana untuk mengintegrasikan API carian Google tersuai ke dalam blog atau laman web anda, menawarkan pengalaman carian yang lebih halus daripada fungsi carian tema WordPress standard. Ia menghairankan mudah! Anda akan dapat menyekat carian ke y

8 plugin susun atur halaman jquery yang menakjubkan8 plugin susun atur halaman jquery yang menakjubkanMar 06, 2025 am 12:48 AM

Leverage JQuery untuk Layouts Laman Web yang mudah: 8 Plugin Essential JQuery memudahkan susun atur laman web dengan ketara. Artikel ini menyoroti lapan plugin jQuery yang kuat yang menyelaraskan proses, terutamanya berguna untuk penciptaan laman web manual

Bina Aplikasi Web Ajax anda sendiriBina Aplikasi Web Ajax anda sendiriMar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

Apa itu ' ini ' Dalam JavaScript?Apa itu ' ini ' Dalam JavaScript?Mar 04, 2025 am 01:15 AM

Mata teras Ini dalam JavaScript biasanya merujuk kepada objek yang "memiliki" kaedah, tetapi ia bergantung kepada bagaimana fungsi dipanggil. Apabila tidak ada objek semasa, ini merujuk kepada objek global. Dalam penyemak imbas web, ia diwakili oleh tetingkap. Apabila memanggil fungsi, ini mengekalkan objek global; tetapi apabila memanggil pembina objek atau mana -mana kaedahnya, ini merujuk kepada contoh objek. Anda boleh mengubah konteks ini menggunakan kaedah seperti panggilan (), memohon (), dan mengikat (). Kaedah ini memanggil fungsi menggunakan nilai dan parameter yang diberikan. JavaScript adalah bahasa pengaturcaraan yang sangat baik. Beberapa tahun yang lalu, ayat ini

10 helaian cheat mudah alih untuk pembangunan mudah alih10 helaian cheat mudah alih untuk pembangunan mudah alihMar 05, 2025 am 12:43 AM

Siaran ini menyusun helaian cheat berguna, panduan rujukan, resipi cepat, dan coretan kod untuk perkembangan aplikasi Android, BlackBerry, dan iPhone. Tiada pemaju harus tanpa mereka! Panduan Rujukan Gesture Touch (PDF) Sumber yang berharga untuk desig

Tingkatkan pengetahuan jQuery anda dengan penonton sumberTingkatkan pengetahuan jQuery anda dengan penonton sumberMar 05, 2025 am 12:54 AM

JQuery adalah rangka kerja JavaScript yang hebat. Walau bagaimanapun, seperti mana -mana perpustakaan, kadang -kadang perlu untuk mendapatkan di bawah tudung untuk mengetahui apa yang sedang berlaku. Mungkin kerana anda mengesan bug atau hanya ingin tahu tentang bagaimana jQuery mencapai UI tertentu

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),