Belajar Python dan Elektronik dengan Minecraft Pi Edition

Belajar Python dan Elektronik dengan Minecraft Pi Edition

Apakah Anda selalu ingin belajar coding tetapi tidak tahu harus mulai dari mana? Pelajari cara mengontrol Minecraft di Raspberry Pi menggunakan Python dan beberapa perangkat elektronik sederhana. Berikut hasil akhirnya:





Anda akan memerlukan Pi 2 atau yang lebih baru untuk proyek ini, dan meskipun Anda dapat menyelesaikan sebagian besar tugas ini melalui baris perintah melalui Secure Shell (SSH), tutorial ini akan fokus pada pengkodean langsung pada Pi.





Baru di Minecraft? Jangan khawatir - inilah kami Panduan Pemula Minecraft .





Pengantar Minecraft Pi

Minecraft untuk Raspberry Pi telah dikembangkan untuk belajar dan bermain-main (dan gratis). Muncul dengan Antarmuka Pemrograman Aplikasi (API) yang menyediakan cara bagi kode untuk berbicara dengan Minecraft dengan mudah. Sangat brilian untuk mempelajari cara membuat kode dengan Python, serta memulai dengan elektronik .

Apa itu Python?

Python adalah bahasa pemrograman. Dia ditafsirkan , yang berarti ketika Anda menjalankan file atau program Python, komputer harus melakukan sedikit pekerjaan pada file terlebih dahulu. Kelemahannya adalah dapat dianggap lambat jika dibandingkan dengan bahasa yang dikompilasi [URL Rusak Dihapus].



Manfaat dari bahasa yang ditafsirkan adalah kecepatan pengkodean dan keramahannya. Anda tidak perlu memberi tahu komputer Apa data yang ingin Anda simpan, hanya saja Anda ingin menyimpan sesuatu dan komputer akan mencari tahu apa yang harus dilakukan. Ada pengecualian, tentu saja, dan ini adalah tampilan yang agak disederhanakan, namun pemrograman harus menyenangkan! Jika Anda mulai menggali detail teknis yang rumit, itu bisa menjadi sedikit melelahkan.

Python peka huruf besar/kecil. Ini penting untuk diketahui, karena Python tidak akan mengenali objek bahkan jika mereka dieja dengan benar jika kasusnya salah. 'Melakukan sesuatu()' tidak akan berfungsi jika metode tersebut sebenarnya disebut 'Melakukan Sesuatu()'. Python juga menggunakan lekukan . Bahasa pemrograman lain mungkin tidak peduli berapa banyak indentasi yang dimiliki kode Anda, sedangkan Python melakukan peduli. Indentasi digunakan untuk memberi tahu Python di mana kode berada. Bahasa lain mungkin menggunakan 'Curly Braces' ({}) untuk mengelompokkan kode -- Python tidak menggunakan ini. Python menggunakan hash (#) untuk komentar, dan komentar digunakan untuk memberi tahu pengembang lain atau orang yang melihat kode apa yang dilakukan bagian tertentu, atau mengapa diperlukan. Python mengabaikan apa pun setelah hash.





Terakhir, ada dua versi utama Python -- Python 2.7.x dan Python 3.x. Ada beberapa perbedaan antara keduanya ( apa perbedaannya? ). Tutorial ini akan menggunakan Python 3.

Pengaturan awal

Memberikan Pi Anda sudah mengatur dan menjalankan Raspbian , tidak banyak penyiapan awal yang diperlukan.





Buka Terminal ( Menu > Aksesori > Terminal ) dan jalankan perintah ini. Itu selalu merupakan praktik yang baik untuk menjaga agar daftar repositori tetap mutakhir, dan ini akan mengunduh daftar program terbaru (itu tidak akan mengunduh program itu sendiri, ini membantu Pi mengetahui program apa yang dipanggil dan di mana menemukannya).

sudo apt-get update

Sekarang perbarui Pi (ini mungkin memakan waktu cukup lama):

sudo apt-get upgrade

Python dan Minecraft Pi sudah terinstal, namun jika Minecraft Pi tidak diinstal karena alasan apa pun, mudah untuk menginstalnya:

sudo apt-get install minecraft-pi

Arahkan ke dokumen dan buat folder baru bernama 'Minecraft':

cd Documents/
mkdir Minecraft

Anda dapat melihat konten folder baru ini:

ls

Berikut tipnya - jika Anda mulai mengetik dan menekan tombol TAB, baris perintah akan mencoba melengkapi pernyataan secara otomatis untuk Anda.

Anda dapat memeriksa jalur ke direktori saat ini menggunakan pwd, yang merupakan singkatan dari Print Working Directory:

pwd

Mulai Minecraft dengan membuka Menu > Permainan > Minecraft Pi . Anda akan membutuhkan ini berjalan, tetapi akan kembali lagi nanti.

Buka Python 3 dari Menu > Pemrograman > Python 3 (IDLE) . Program ini menyediakan cara bagi Anda untuk menjalankan perintah Python dan menulis program.

Sekarang Anda bisa mengetikkan perintah Python Anda di sini, tapi itu tidak terlalu praktis. Pergi ke File > File Baru lalu File > Simpan dan simpan ini di folder yang Anda buat sebelumnya. ( Dokumen > Minecraft ). sebut saja' hello_world.py '. Anda tidak harus menggunakan ekstensi .py, ini akan ditambahkan secara otomatis, tetapi ini praktik yang baik.

Jika Anda beralih kembali ke terminal, dan menavigasi ke folder Minecraft, Anda akan melihat file yang baru saja Anda buat:

cd Minecraft/
ls

Anda dapat menjalankan file ini seperti ini:

python hello_world

Perhatikan bagaimana 'python' semuanya huruf kecil. Ini harus sebelum nama file, karena memberi tahu Pi bahwa file berikut adalah Python, jadi itu harus dieksekusi seperti itu.

Beralih kembali ke editor Python dan ketik:

print 'Hello, World!'

Simpan file ini dan jalankan lagi - Anda sekarang akan melihat 'Hello, World!' muncul di baris perintah -- rapi! Perintah print hanya memberitahu Python untuk menampilkan teks berikut dalam tanda kutip ganda. Ini bagus, tetapi tidak terlalu berguna untuk Minecraft, mari kita tautkan:

from mcpi.minecraft import Minecraft
mc = Minecraft.create()
mc.postToChat('Hello, World!')

Sekarang jika Anda menyimpan dan menjalankan file ini, Anda akan melihat 'Hello, World!' muncul di game Minecraft. Mari kita urai kodenya:

from mcpi.minecraft import Minecraft

Baris ini memberi tahu Python bahwa Anda ingin menggunakan kode dari file lain. File mcpi.minecraft ini dikembangkan untuk memudahkan kontrol Minecraft.

mc = Minecraft.create()

Baris ini membuat objek yang disebut 'mc' (Minecraft). Anda harus membuat ini untuk memungkinkan komunikasi ke game Minecraft -- tidak cukup hanya dengan menyertakan file.

mc.postToChat('Hello, World!')

Akhirnya, baris ini memberi tahu Minecraft untuk menulis beberapa teks ke obrolan. Coba ubah 'Halo, Dunia!' ke sesuatu yang lain dan lihat apa yang terjadi, tetapi ingat untuk menyertakan kedua tanda kutip ganda. Jika Anda mengalami masalah perangkat lunak, ini adalah beberapa kesalahan umum Python dan Minecraft Pi:

  • AttributeError -- ini salah ketik, seperti pint atau prnt, bukan print
  • NameError: nama 'Minecraft' tidak ditentukan -- ingat untuk mengimpor modul yang Anda butuhkan
  • NameError: nama 'benar' tidak ditentukan -- Python peka huruf besar-kecil, ubah menjadi 'Benar'
  • socket.error: [Errno 111] Koneksi ditolak -- Pastikan Minecraft berjalan

Proyek

Sekarang setelah Anda mengetahui dasar-dasar Python dan Minecraft, mari buat beberapa proyek keren. Semua kode dapat diunduh dari Github.

Pembuat Jembatan Otomatis

Program ini secara efektif akan membangun jembatan di atas air. Ketika pemain mendekati badan air, program akan mengubah beberapa balok menjadi batu. Karena Minecraft menggunakan sistem koordinat, sangat mudah untuk mendapatkan lokasi pemain, bersama dengan jenis blok di sekitar pemain. Minecraft Pi sedikit terbatas, jadi tidak mungkin memperbarui beberapa blok berbeda secara massal. Namun, Anda dapat dengan mudah mengkodekan perilaku ini sendiri.

Buat file baru ( File > File Baru ) dan simpan sebagai ' bridge_builder.py '.

from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos() # store player position

# store the surrounding blocks
a = mc.getBlock(x, y - 1, z + 1)
b = mc.getBlock(x, y - 1, z - 1)
c = mc.getBlock(x - 1, y - 1, z)
d = mc.getBlock(x + 1, y - 1, z)
if a == 8 or a == 9 or b == 8 or b == 9 or c == 8 or c == 9 or d == 8 or d == 9:
# 8 or 9 is water. Set surrounding blocks on floor to a solid (stone) if water is found
mc.setBlocks(x, y - 1, z, x + 1, y - 1, z + 1, 1)
mc.setBlocks(x, y - 1, z, x - 1, y - 1, z - 1, 1)
mc.setBlocks(x, y - 1, z, x - 1, y - 1, z + 1, 1)
mc.setBlocks(x, y - 1, z, x + 1, y - 1, z - 1, 1)

Perhatikan bagaimana nilai y sebenarnya melihat y - 1. Ini adalah level lantai. Jika nilai y digunakan, skrip akan mencari blok setinggi lutut -- itu tidak akan bekerja dengan baik! Mc.getBlock() mengembalikan id blok untuk koordinat yang diberikan. Karena x, y, dan z adalah koordinat pemain, Anda dapat menambah atau menguranginya untuk mendapatkan posisi di sekitar pemain. Anda tidak harus menggunakan nilai x, y, dan z, Anda dapat menggunakan angka apa pun, namun Anda mungkin tidak tahu bagaimana blok tertentu terkait dengan pemutar -- lebih baik menggunakan nilai yang terkait dengan pemutar. Jalankan file ini dari baris perintah dan lihat apa yang terjadi.

Anda harus melihat bahwa area kecil tanah berubah menjadi batu setelah pemain mencapai badan air. Ini tidak bagus -- Anda bisa berjalan cukup cepat untuk menimbulkan masalah. Anda dapat mengatasi ini dengan mengubah volume air yang lebih besar menjadi daratan. Bagian terakhir dari metode mc.setBlocks() adalah id blok. Salah satunya adalah id blok untuk batu. Anda bisa mengubahnya menjadi kayu, rumput, atau apa pun. Jika Anda mau, Anda dapat dengan mudah mengubahnya menjadi desain yang rumit -- mungkin jembatan gantung!

Tombol Penambangan Super

Contoh ini akan membuat pekerjaan pertambangan singkat. Ini terdiri dari tombol fisik, yang ketika ditekan, akan menambang 10 blok potong dadu. Mari kita mulai dengan tombol. Mirip dengan tombol pada Arduino, Anda akan memerlukan sejumlah kecil elektronik, yang semuanya harus ditemukan dalam starter kit dasar :

  • 1 x papan tempat memotong roti
  • 1 x sakelar sesaat
  • 1x220 ohm resistor
  • Kabel lompat wanita > pria
  • Pria > Kabel lompat pria

Berikut sirkuitnya:

Sambungan Pi-Tombol

Resistor ini disebut resistor 'pull down'. Ini membantu untuk memastikan bahwa apa yang Pi pikirkan adalah tombol yang ditekan, benar-benar tombol yang ditekan. Anda tidak harus menggunakan ini, namun disarankan, karena Anda mungkin menemukan banyak noise dan pembacaan yang salah tanpanya.

Tombol terhubung ke pin General Purpose Input Output (GPIO) 14. Anda dapat menggunakan pin GPIO apa saja, namun lihat pinout pertama, karena tidak semuanya dapat dikontrol dari Pi, dan sedikit berbeda antar model.

Sekarang setelah tombol terhubung, saatnya untuk mengujinya. Buat file baru dan simpan sebagai ' button_test.py '. Tambahkan kode ini, simpan lalu jalankan di Terminal.

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
print 'BUTTON WORKS!' # log result
time.sleep(0.5) # wait 0.5 seconds

tekan Kontrol + C untuk menghentikan skrip. Jika semuanya bekerja dengan benar, Anda akan melihat 'BUTTON WORKS!' di Terminal. Perhatikan bagaimana, seperti modul Minecraft, tes ini menggunakan RPi.GPIO dan modul waktu. Ini memungkinkan Pi untuk mengakses pin perangkat keras dan menyediakan fungsi pengaturan waktu yang berguna.

Sekarang mari selesaikan sisa kodenya. Buat file baru bernama ' super_mine.py '. Berikut kodenya:

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
x, y, z = mc.player.getPos() # read the player position
mc.setBlocks(x, y, z, x + 10, y + 10, z + 10, 0) # mine 10 blocks
mc.setBlocks(x, y, z, x - 10, y + 10, z - 10, 0) # mine 10 blocks
time.sleep(0.5) # wait 0.5 seconds

mc.player.getPos() mengembalikan koordinat pemain saat ini, yang kemudian disimpan dalam x, y, dan z. NS setBlock() metode memberitahu Minecraft untuk mengisi semua blok antara awal dan akhir dengan blok berikut. Nol adalah blok-id untuk udara. Anda dapat mengubah ini ke block-id lain untuk mengisi area dengan solid. Anda juga dapat mengubah koordinat menjadi +100 atau bahkan +1000 blok, namun Pi mungkin mulai kesulitan jika Anda terlalu gila. Perhatikan bagaimana y + 10 sama untuk kedua baris. Anda dapat mengubah ini menjadi y - 10 jika Anda ingin menghapus blok di bawah tanah.

Teleportasi

Penggunaan sederhana lainnya untuk tombol ini adalah untuk 'teleportasi'. Minecraft Pi Api menyediakan cara untuk mengatur posisi pemain. Kode berikut akan 'menteleportasi' pemain ke lokasi yang telah ditentukan:

mc.player.setPos(0, 0, 0)

Perhatikan bahwa metodenya menerima tiga parameter; x, y, dan z – sehingga Anda dapat mengatur ini ke apa saja untuk langsung memindahkan pemain ke lokasi itu.

Buat salinan file super_mine ( File > Simpan Salin Sebagai ) dan modifikasi dengan mengganti if dengan yang berikut:

if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

File ini sekarang akan terlihat seperti ini:

import RPi.GPIO as GPIO
from mcpi.minecraft import Minecraft
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True: # look for button press
mc.player.setPos(0, 0, 0) # teleport player
time.sleep(0.5) # wait 0.5 seconds

Simpan sebagai ' teleport.py ' dan lari.

Anda mungkin menemukan pemain terjebak di dalam beberapa blok saat menggunakan ini, dalam hal ini Anda harus menyesuaikan koordinat ke ruang terbuka yang diketahui (kiri atas layar menunjukkan lokasi Anda saat ini).

Membangun sebuah rumah

Satu tugas terakhir untuk tombol ini adalah membangun rumah. Sama seperti contoh penambangan cepat di atas, ini hanya akan mengganti blok yang mengelilingi pemain untuk membuat rumah. Blok-id yang berbeda akan digunakan untuk bahan yang berbeda (jendela, dinding, dll). Untuk mempermudah pengkodean, blok padat akan dibuat, dan kemudian bagian dalamnya dilepas (set blok ke udara), ini akan membuat cangkang berongga. Anda dapat menambahkan ekstra seperti tempat tidur atau pintu, namun proyek Minecraft Pi sedikit tidak lengkap, dan meskipun objek ini berfungsi saat ditempatkan oleh pemain, objek tersebut tidak brilian saat menggunakan Python.

from mcpi.minecraft import Minecraft
import RPi.GPIO as GPIO
import time
mc = Minecraft.create() # create Minecraft Object
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.IN) # tell the Pi this pin is an input
while True:
if GPIO.input(14) == True:
x, y, z = mc.player.getPos()
mc.setBlocks(x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # make shell
mc.setBlocks(x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # remove inside
mc.setBlocks(x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # make doorway
mc.setBlocks(x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # make window 1
mc.setBlocks(x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # make window 2
mc.setBlocks(x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # make window 3

Simpan ini sebagai ' rumah.py ' dan lari. Semua baik-baik saja, Anda akan melihat sebuah rumah kecil muncul (Anda mungkin perlu berbalik untuk menemukannya). Ini sangat sederhana, bukaan dan beberapa jendela. Secara teori, tidak ada batasan seberapa besar atau kompleks bangunan yang dapat Anda bangun.

Buat Game Mini

Selanjutnya, mari kita buat mini-game! Ini akan cukup sederhana, ketika pemain menginjak balok pasir, itu akan berubah menjadi lava setelah waktu yang acak. Ini adalah permainan yang bagus untuk dibuat, karena Anda dapat merancang level Anda sendiri atau memodifikasinya untuk membuat segalanya lebih sulit. Anda tidak memerlukan tombol untuk contoh ini.

Buat file baru dan simpan sebagai ' mini_game.py '. Berikut kodenya:

from mcpi.minecraft import Minecraft
import random
import time
mc = Minecraft.create() # create Minecraft Object
while True:
x, y, z = mc.player.getPos()
block_under_player = mc.getBlock(x, y - 1, z)

if block_under_player == 12:
# player standing on sand, start the timer
random_time = random.uniform(0.1, 2.5) # generate random number
time.sleep(random_time); # wait
mc.setBlock(x, y - 1, z, 11) # turn it into lava

Kode ini adalah permulaan yang baik di acak() fungsi: acak. seragam(0.1, 2.5) akan menghasilkan angka acak antara 0,1 (1/10 detik) dan 2,5 (2 1/2 detik). Meningkatkan angka-angka ini akan membuat permainan lebih mudah.

Cobalah! Berdiri di atas balok pasir, dan sebentar lagi akan berubah menjadi lava. Ini bisa menjadi dasar dari permainan yang lebih kompleks.

Buat Mini Game Lain

Premis untuk game ini sederhana - jangan berdiri di lantai kayu saat waktu habis. Pemain akan diteleportasi ke 'arena'. Mereka dipaksa untuk berdiri diam sampai pertandingan dimulai. Setelah dimulai, lantai akan berubah menjadi air setelah timer habis. Pemain harus berdiri di zona aman (blok berlian) untuk bertahan hidup. Setiap level mengurangi timer satu detik. Setelah setiap level yang berhasil, area aman menjadi lebih besar. Lihat kode di bawah ini:

import time
import random
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
# clear area
mc.setBlocks(-10, 1, -10, 25, 5, 25, 0)
# create arena shell
mc.setBlocks(0, 0, 0, 25, 10, 25, 17)
# hollow out arena
mc.setBlocks(1, 1, 1, 24, 10, 24, 0)
# move player to arena
mc.player.setPos(14, 25, 20) # teleport player
# make them stay put
# teleport player to start position every 1/10th second.
# do this for 5 seconds then start the game
time.sleep(2)
total_wait = 0
mc.postToChat('Waiting to Start')
while total_wait <5:
mc.player.setPos(14, 1, 20) # teleport player
time.sleep(0.1)
total_wait += 0.1
mc.postToChat('BEGIN!')
# 10 levels
for level in range(10):
x, y, z = mc.player.getPos()
level_time = 10 - level # reduce time by 1 second for each level
mc.postToChat('Level - ' + str(level + 1) + ' start')
# build floor
mc.setBlocks(0, 0, 0, 25, 0, 25, 17)
# make safe area
safe_area_start = random.uniform(0, 22)
safe_area_end = random.uniform(0, 22)
mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57)
elapsed_time = 0
while elapsed_time <10:
x, y, z = mc.player.getPos()
time.sleep(0.25)
elapsed_time += 0.25
# check player is still on floor
if y <0.75:
mc.postToChat('Game Over')
break;
else:
# remove floor
mc.setBlocks(-10, 0, -10, 25, 0, 25, 8)
# put safe area back
mc.setBlocks(safe_area_start, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57)
time.sleep(2.5)
continue
break

Simpan ini sebagai ' mini_game_2.py ' dan mencobanya.

Pi 2 memiliki beberapa masalah kinerja saat menjalankan Minecraft. Grafik penggunaan Central Processing Unit (CPU) ( ujung kanan atas ) tidak pernah menunjukkan beban berat, jadi ini pasti karena desain dan pengoptimalan yang buruk oleh pengembang. Masalah-masalah ini tidak terkait dengan kode yang sedang berjalan (karena terus berlanjut ketika Python tidak berjalan), namun diperparah oleh mini game ini. Jika Pi Anda benar-benar kesulitan, Anda mungkin ingin mengurangi ukuran arena atau meng-overclock Pi Anda.

templat kartu indeks 3x5 microsoft word

Detektor Berlian

Mari kita buat sirkuit lain. Ini akan menggunakan Light Emitting Diode (LED) untuk menyala ketika ada berlian di bawahnya (dalam jarak 15 blok). Inilah yang Anda butuhkan:

  • 1 x papan tempat memotong roti
  • 1 x LED
  • 1x220 ohm resistor
  • Kabel lompat wanita > pria
  • Pria > Kabel lompat pria

Berikut sirkuitnya:

Hubungkan Anoda (kaki panjang) ke GPIO Pin 14. Pin ini bertindak seperti +5v. Hubungkan Katoda (kaki pendek) ke ground.

Saya telah menggunakan mainan bijih murah dan memodifikasinya dengan melepas penutup belakang dan elektronik, saya kemudian menempatkan LED di bawahnya. Anda dapat dengan mudah membuat ini permanen dengan lem panas atau yang serupa.

Simpan kode ini sebagai ' diamonds.py ':

import RPi.GPIO as GPIO
import time
from mcpi.minecraft import Minecraft
mc = Minecraft.create() # create Minecraft Object
led_pin = 14 # store the GPIO pin number
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output
while True:
# repeat indefinitely
x, y, z = mc.player.getPos()
for i in range(15):
# look at every block until block 15
if mc.getBlock(x, y - i, z) == 56:
GPIO.output(led_pin, True) # turn LED on
time.sleep(0.25) # wait
GPIO.output(led_pin, False) # turn LED off
time.sleep(0.25) # wait

Ketika ada blok bijih berlian di bawah pemain (dalam jarak 15 blok) lampu akan berkedip.

ThinkGeek Minecraft Light-Up Blue Stone Diamond Ore - Pastikan untuk Menjauhkan Pigmen BELI SEKARANG DI AMAZON

Sudahkah Anda membuat sesuatu yang keren dengan Minecraft Pi? Beri tahu saya di komentar apa yang Anda buat atau seberapa jauh Anda berhasil dalam permainan.

Kami harap Anda menyukai item yang kami rekomendasikan dan diskusikan! MUO memiliki kemitraan afiliasi dan sponsor, jadi kami menerima bagian dari pendapatan dari beberapa pembelian Anda. Ini tidak akan memengaruhi harga yang Anda bayar dan membantu kami menawarkan rekomendasi produk terbaik.

Membagikan Membagikan Menciak Surel Apakah Layak Mengupgrade ke Windows 11?

Windows telah didesain ulang. Tetapi apakah itu cukup untuk meyakinkan Anda untuk beralih dari Windows 10 ke Windows 11?

Baca Selanjutnya
Topik-topik yang berkaitan
  • buatan sendiri
  • Pemrograman
  • Minecraft
  • Raspberry Pi
  • Elektronik
  • Python
Tentang Penulis Joe Coburn(136 Artikel Diterbitkan)

Joe adalah lulusan Ilmu Komputer dari University of Lincoln, Inggris. Dia adalah pengembang perangkat lunak profesional, dan ketika dia tidak menerbangkan drone atau menulis musik, dia sering terlihat sedang mengambil foto atau membuat video.

More From Joe Coburn

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan