Comparison of integrated development environments: Difference between revisions

Content deleted Content added
Ppkkxxdd
Tags: Reverted Mobile edit Mobile web edit
Added {{Unreliable sources}} tag: sources are not independent of the subjects
 
(19 intermediate revisions by 10 users not shown)
Line 1:
{{Short description|Notable software packages that are nominal IDE}}
Okay, "unlimited pets only at 1 Rupee" is a fantastic feature! This directcorrelatesour with the "10 rupees for everything" concept and makes pets incredibly accessible, adding to the fun customisationion and collection.
{{Multiple issues|
To implement this, we'll need to:
{{Original research|date=August 2025}}
* Define Pet Types: Create a way to represent different types of pets (e.g., differecoloursors, shapes, or names).
{{Unreliable sources|date=August 2025}}
* Pet Ownership: Keep track of which pets the player owns.
}}
* Pet Shop/Menu: Provide an interface where the player can "buy" pets for 1 Rupee.
{{Use mdy dates|date=September 2015}}
* Display Owned Pets: Allow the player to see and perhaps select which pet follows them.
{{Main article|Integrated development environment}}
* Currency Integration: Connect this to our existinyet notyet fully implemented) currency system.
{{sort-under}}
Let's refine our plan and then integrate this into the code.
Overview of the Solution (Updated)
We'll continue building on our Pygame base.
* Set up Pygame: (Already done)
* Player Movement: (Already done)
* Procedural Map Generation (Simplified): (Next major step for exploration)
* Currency System: Implement a basic currency (Rupees) that the player earns.
* Pet System:
* Define a Pet class or data structure.
* Create a "Pet Shop" mechanism accessible viakeypressess.
* Allow buying pets for 1 Rupee.
* Store owned pets.
* Display a selected pet following the player.
* Basic Shop/Customization (for avatar & future items): Allow players to spend Rupees.
* Interactions: Fevents,tinteractcwith eventsnts in the world.
Code and Implementation Instructions (Part 2: Currency & Pet Elifem Foundation)
This update will:
* Add a rupees variable to track player currency.
Introduceuce a simple Pet class.
* Create a list of available pets.
* Implement a basic "shop mode" that can be toggled to buy pets.
* Allow the player to switch between owned pets.
* Draw the selected pet following the player.
First, let's update our game.py file.
import pygame
import random
 
# --- Game Constants ---
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_SIZE = 30
TILE_SIZE = 50 # Size of each 'chunk' or 'tile' in our simplified world
 
# Colors (RGB)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 200, 0) # Ground
BLUE = (100, 100, 255) # Sky/Water (for distant areas)
RED = (255, 0, 0) # Player color
YELLOW = (255, 255, 0) # For currency display or items
PURPLE = (150, 0, 150) # Pcolourlor example
ORANGE = (255, 165, 0)
CYAN = (0, 255, 255)
 
# --- Initialize Pygame ---
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("My Unlimited World")
 
clock = pygame.time.Clock() # To control game speed
 
# --- Fonts ---
font = pygame.font.Font(None, 36) # Default font, size 36
 
# --- Player Variables ---
player_x = SCREEN_WIDTH // 2 - PLAYER_SIZE // 2
player_y = SCREEN_HEIGHT // 2 - PLAYER_SIZE // 2
player_speed = 5 # Pixels per frame
rupees = 100 # Starting rupees, easily enough to buy many pets!
 
# --- Pet System ---
class Pet:
def __init__(self, name, color, size_multiplier=0.7):
self.name = name
self.color = color
self.size = int(PLAYER_SIZE * size_multiplier) # Pets are slightly smaller than player
 
# List of all available pet types
all_pets = [
Pet("Doggo", ORANGE),
Pet("Catnip", PURPLE),
Pet("Robo-Buddy", CYAN),
Pet("Slimey", GREEN),
Pet("Little Dragon", RED),
Pet("Mini Unicorn", WHITE),
Pet("Blobfish", BLUE),
]
 
owned_pets = [all_pets[0]] # Player starts with one pet (Doggo)
current_pet_index = 0 # Index of the pet currently following the player
 
# --- Game State Variables ---
in_shop_mode = False # True when the shop is open
 
# --- Game Loop ---
running = True
while running:
Forfor event in pyga Eventent.get():
if event.type == pygame.QUIT:
running = False
Elifelif event.type == pygame.KEYDOWN:
# Toggle shop mode with 'S' key
if event.key == pygame.K_s:
in_shop_mode = not in_shop_mode
# Buy pet if in shop mode and 'B' is pressed
Eliflif in_shop_mode and event.key == pygame.K_b:
if rupees >= 1:
# Select a random pet to buy
unowned_pets = [pet for pet in all_pets if pet not in owned_pets]
if unowned_pets: # If there are pets to buy
new_pet = random.choice(unowned_pets)
owned_pets.append(new_pet)
rupees -= 1
print(f"Bought {new_pet.name} for 1 Rupee! Rupees left: {rupees}")
# Optionally, make the newly bought pet the current one
current_pet_index = len(owned_pets) - 1
else:
print("You already own all pets!")
else:
print("Not enough rupees to buy a pet! (Need 1 Rupee)")
# Cycle through owned pets with 'N' (Next) and 'P' (Previous) keys
elif not in_shop_mode and len(owned_pets) > 1:
if event.key == pygame.K_n:
current_pet_index = (current_pet_index + 1) % len(owned_pets)
print(f"Switched to {owned_pets[current_pet_index].name}")
elif event.key == pygame.K_p:
current_pet_index = (current_pet_index - 1 + len(owned_pets)) % len(owned_pets)
print(f"Switched to {owned_pets[current_pet_index].name}")
 
 
# --- Input Handling (Player Movement) ---
# Only allow movement if not in shop mode
if not in_shop_mode:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player_x -= player_speed
if keys[pygame.K_RIGHT]:
player_x += player_speed
if keys[pygame.K_UP]:
player_y -= player_speed
if keys[pygame.K_DOWN]:
player_y += player_speed
 
# Keep player within screen bounds
if player_x < 0:
player_x = 0
if player_x > SCREEN_WIDTH - PLAYER_SIZE:
player_x = SCREEN_WIDTH - PLAYER_SIZE
if player_y < 0:
player_y = 0
if player_y > SCREEN_HEIGHT - PLAYER_SIZE:
player_y = SCREEN_HEIGHT - PLAYER_SIZE
 
# --- Drawing ---
screen.fill(BLUE) # Fill background with a "sky" color
 
# Draw a simple "ground" area in the center
pygame.draw.rect(screen, GREEN, (0, SCREEN_HEIGHT / 4, SCREEN_WIDTH, SCREEN_HEIGHT * 3 / 4))
 
# Draw player
pygame.draw.rect(screen, RED, (player_x, player_y, PLAYER_SIZE, PLAYER_SIZE))
 
# Draw current pet following the player
if owned_pets:
current_pet = owned_pets[current_pet_index]
pet_offset_x = 0 # Offset for pet position relative to player
pet_offset_y = PLAYER_SIZE + 5 # Pet appears slightly below player
 
pet_draw_x = player_x + (PLAYER_SIZE // 2) - (current_pet.size // 2) + pet_offset_x
pet_draw_y = player_y + pet_offset_y
 
pygame.draw.rect(screen, current_pet.color, (pet_draw_x, pet_draw_y, current_pet.size, current_pet.size))
 
 
# Display Rupees
rupees_text = font.render(f"Rupees: {rupees}", True, YELLOW)
screen.blit(rupees_text, (10, 10))
 
# Display Shop Mode / Instructions
if in_shop_mode:
shop_text = font.render("SHOP MODE: Press 'B' to buy a random pet (1 Rupee)", True, WHITE)
screen.blit(shop_text, (SCREEN_WIDTH // 2 - shop_text.get_width() // 2, SCREEN_HEIGHT // 2 - 50))
shop_text2 = font.render(f"Pets owned: {len(owned_pets)}/{len(all_pets)}", True, WHITE)
screen.blit(shop_text2, (SCREEN_WIDTH // 2 - shop_text2.get_width() // 2, SCREEN_HEIGHT // 2))
else:
info_text = font.render("Press 'S' for Shop. Arrow keys to move.", True, WHITE)
screen.blit(info_text, (SCREEN_WIDTH // 2 - info_text.get_width() // 2, 10))
if len(owned_pets) > 1:
pet_switch_text = font.render(f"Current Pet: {owned_pets[current_pet_index].name} (N/P to switch)", True, YELLOW)
screen.blit(pet_switch_text, (SCREEN_WIDTH // 2 - pet_switch_text.get_width() // 2, 40))
 
 
# --- Update Display ---
pygame.display.flip()
 
# --- Control Frame Rate ---
clock.tick(60)
 
# --- Quit Pygame ---
pygame.quit()
 
How to Implement and Run the Code:
* Replace your game.py content: Copy and paste the entire code block above into your existing game.py file, overwriting the previous content.
* Run the game: Open your terminal or command prompt, navigate to your game's directory, and run:
python game.py
 
New Features and How to Use Them:
* Rupee Display: You'll now see your current "Rupees" balance in the top-left corner. You start with 100!
* Shop Mode (S key):
* Press the S key to toggle "SHOP MODE" on or off.
* When in shop mode, your player won't move.
* Instructions will appear on screen.
* Buy Pets (B key in Shop Mode):
* While in shop mode, press B to buy a random, unowned pet for 1 Rupee.
* You'll see messages in your terminal confirming the purchase and your remaining rupees.
* If you already own all pets, it will tell you.
* Switch Pets (N and P keys):
* When not in shop mode, if you own more than one pet, you can press N (Next) to cycle forward through your owned pets or P (Previous) to cycle backward.
* The selected pet will appear following your player.
* Pet Following: Your currently selected pet (initially "Doggo") will follow slightly below your player.
Explanation and Documentation:
* font = pygame.font.Font(None, 36): Initializes Pygame's font module. None uses the default system font, and 36 is the font size.
* rupees = 100: Our starting currency. We're being generous to make the "everything is cheap" feel immediate.
* class Pet::
* A simple Python class to represent a pet. Each pet has a name, a color (for drawing), and a size (scaled from the player size).
* This is a good way to organize data for different types of objects in your game.
* all_pets: A list containing instances of our Pet class, defining all the unique pets available in the game.
* owned_pets: A list that will store the Pet objects the player currently possesses. We start with all_pets[0] (Doggo) to give the player a starting pet.
* current_pet_index: An integer representing the index of the pet in owned_pets that is currently active and following the player.
* in_shop_mode: A boolean variable that controls whether the game is currently in the shop interface.
* Event Handling for Keys (event.type == pygame.KEYDOWN):
* We specifically check for KEYDOWN events (when a key is pressed down, not held).
* pygame.K_s: Toggles in_shop_mode.
* pygame.K_b (in shop mode):
* Checks if the player has enough rupees.
* Filters all_pets to find unowned_pets.
* Uses random.choice() to pick one if available.
* Appends the new pet to owned_pets and subtracts 1 rupee.
* Updates current_pet_index to the newly bought pet.
* pygame.K_n and pygame.K_p (not in shop mode):
* These handle cycling through owned_pets using the modulo operator (%) to loop back to the beginning or end of the list, creating a seamless cycle.
* Player Movement Restriction: The player movement logic is now inside an if not in_shop_mode: block, preventing movement while the shop is open.
* Drawing the Pet:
* An if owned_pets: check ensures we only try to draw a pet if the player actually owns one.
* current_pet = owned_pets[current_pet_index] retrieves the selected pet object.
* Calculates pet_draw_x and pet_draw_y to position the pet slightly below and centered with the player.
* pygame.draw.rect(screen, current_pet.color, ...) draws the pet as a colored square.
* Displaying Text:
* font.render(text, anti_alias, color) creates a Surface object with the rendered text. True for anti_alias makes the text smoother.
* screen.blit(text_surface, (x, y)) draws the text surface onto the main screen.
This is a big step! You now have a working currency system and a pet shop where all pets cost only 1 Rupee, fulfilling your "unlimited pets only at Rupees 1" request.
Next, we can start thinking about how to make the "unlimited places" part of the game come alive, which will also give the player a way to earn more rupees through exploration.
 
== ActionScript ==
Line 679 ⟶ 438:
| {{Yes}}
| {{yes}}
| {{Yes}}<ref>Using the wxSmith plug-in (included in distribution, requires [[wxWidgets]] SDK)</ref>
| {{yes}}
| 2020-05<ref>[http://www.codeblocks.org/ codeblocks.org] / Also provides relatively stable "nightly builds", an alternative to the official releases</ref>
Line 710 ⟶ 469:
| {{yes|[[GPL]]}}
| {{yes}}
| {{no}}<ref>A [https://web.archive.org/web/20010806095844/http://freshmeat.net/projects/dev-cpp/ Linux version] was in the works, but has been abandoned since mid-2002; however, Dev-C++ has been reported to run on [[Wine (software)|Wine]].</ref>
| {{no}}
| [[FreeBSD]]
Line 739 ⟶ 498:
| {{yes}}<ref name="Eclipse CDT Toolchain">{{cite web |url=http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.cdt.doc.isv%2Fguide%2Fcdt_build_system%2Fmigration_guides%2F4.0%2Fmigration_guide_40.html |title=Eclipse CDT Toolchain Documentation |access-date=January 29, 2014}}</ref>
| {{yes}}<ref name="Eclipse Linux Tools Profiling">{{cite web |url=http://wiki.eclipse.org/Linux_Tools_Project/OProfile/User_Guide |title=Eclipse LinuxTools integration of OProfile |access-date=January 29, 2014}}</ref>
| {{yes}}
| {{yes}}<ref name="Eclipse Linux Tools Code Coverage">{{cite web |url=http://wiki.eclipse.org/Linux_Tools_Project/GCov/User_Guide |title=Eclipse LinuxTools integration of GCov |access-date=January 29, 2014}}</ref>
| {{yes}}
| {{yes}}
Line 807 ⟶ 566:
| {{no}}
| {{yes}}
| 2019-07<ref>
| 2019-07<ref>{{cite web |url=https://www.jetbrains.com/clion/whatsnew/ |title=What's New in CLion |access-date=2019-10-22}}</ref>
access-date=2019-10-22}}</ref>
| {{yes}} (customizable)
| {{yes}} (customizable)
Line 873 ⟶ 633:
| {{yes}}
| {{yes}}
| {{yes}} (also plugin)<ref name="Visual Assist X and Resharper C++">Refactoring for Visual Studio C/C++ is supported natively since Visual Studio 2015 and via third-party plugins Visual Assist X http://www.wholetomato.com/ and Resharper for C++ https://www.jetbrains.com/resharper-cpp/</ref>
|-
![[Visual Studio Code]]
Line 894 ⟶ 654:
| {{yes|External}}
| {{yes|External}}
| {{maybe|Requires language server support}}<ref>{{cite web|url=https://code.visualstudio.com/blogs/2016/06/27/common-language-protocol|title=A Common Protocol for Languages}}</ref><ref>{{cite web|url=https://code.visualstudio.com/docs/editor/refactoring|title=Refactoring source code in Visual Studio Code}}</ref>
|-
! [[MonoDevelop]]
Line 924 ⟶ 684:
| [[OpenBSD]], [[Oracle Solaris|Solaris]]
| [[Java (programming language)|Java]]
| {{yes}}<ref name="netbeansCC++">{{cite web | url=http://www.netbeans.org/features/cpp/index.html | title=C and C++ Development | publisher=[[Sun Microsystems]] | access-date=June 26, 2009}}</ref>
| {{yes}}<ref name="netbeansCC++" />
| {{yes}}<ref>{{cite web | url=http://www.netbeans.org/kb/docs/cnd/quickstart.html | title=C/C++ Projects Quick Start Tutorial | publisher=[[Sun Microsystems]] | access-date=June 26, 2009 | archive-date=October 18, 2012 | archive-url=https://web.archive.org/web/20121018215335/http://netbeans.org/kb/docs/cnd/quickstart.html | url-status=dead }}</ref>
| {{no}}<ref name="netbeansCC++" />
| {{no}}
Line 940 ⟶ 699:
! [[OpenWatcom]]
| {{yes|[[Sybase Open Watcom Public License|OSI Approved]]}}
| {{yesno}} (32-bit only)
| {{partial}}
| {{no}}
| [[FreeBSD]], [[DOS]], [[OS/2]]
| [[C (programming language)|C]]/[[C++]]
| {{yes}} (GUI remote)
| {{yes}}
| {{yes}}
Line 1,017 ⟶ 776:
| {{yes}}
| {{yes}}
[[Rational Software Architect|Rational Software Architect (Eclipse IBM)]]
| 2024-02
| {{yes|External}}
| {{yes|External}}
| {{yes}}<ref>[https://qt-project.org/doc/qtcreator-2.8/creator-editor-refactoring.html qt-project.org] {{webarchive |url=https://archive.today/20130717084411/https://qt-project.org/doc/qtcreator-2.8/creator-editor-refactoring.html |date=July 17, 2013 }}</ref>
|-
! [[Rational Software Architect|Rational Software Architect (Eclipse IBM)]]
| {{proprietary}}
| {{yes}}
Line 1,071 ⟶ 825:
| [[FreeBSD]], [[Oracle Solaris|Solaris]]
| [[C++]]
| {{yesno}}
| {{yes}}
| {{yes}}
Line 1,081 ⟶ 835:
| {{yes}}
| 2022-12
| {{yesno|External}}
| {{yesno|External}}
| {{no}}
|-
Line 1,110 ⟶ 864:
| {{no}}
| {{no}}
| {{yesno}}
| cross compiles to [[iOS (Apple)|iOS]]
| [[C (programming language)|C]], [[C++]], [[Objective-C]], [[Objective-C++]]
Line 1,123 ⟶ 877:
| {{yes}}
| 2016-12
| {{no}}, llvm (llvm-gcc and gcc deprecated)
| {{yes}}, llvm (llvm-gcc and gcc deprecated)
| {{no}}
| {{yes}}, llvm (llvm-gcc and gcc deprecated)
| {{yes}}
|}
 
Line 1,145 ⟶ 899:
Community Edition: [[Freeware]]
| [[Microsoft]]
| {{sort|2019-04-12June 23, 2025|1617.914.47 &nbsp;/&nbsp;AprilJune 1323, 20212025}}
| {{Yes}}
| {{No}}
Line 1,249 ⟶ 1,003:
|}
 
== Common Lisp ==
{{See also|Lisp (programming language)|l1=Lisp}}
=== Common Lisp ===
<!-- Please keep the list alphabetized and do not add trivial or obscure features to the table. If in doubt, discuss on the talk page. -->
{{See also|Common Lisp}}
Line 1,302 ⟶ 1,058:
| {{yes}}
| [[Class browser]], Errors, Symbols
|}
 
=== Emacs Lisp ===
{{See also|Emacs Lisp}}
 
{| class="wikitable sortable sort-under" style="font-size: 85%; text-align: center; width: auto;"
|-
! [[Integrated development environment|IDE]]
! [[Software license|License]]
! [[Microsoft Windows|Windows]]
! [[Linux]]
! [[macOS]]
! [[Platform (computing)|Other platforms]]
! [[text editor|Editor]]
! [[Debugger]]
! [[GUI builder]]
! [[Profiler (computer science)|Profiler]]
! Limitations
|-
! [[GNU Emacs]]
| {{yes|[[GNU General Public License|GPLv3]]}}
| {{yes}}
| {{yes}}
| {{yes}}
| [[FreeBSD]], [[OpenBSD]], [[Haiku (operating system)|Haiku]]
| {{yes}} (built-in)
| {{yes}} (Edebug, IELM)
| {{yes}} (via packages like Emacs Widget Library)
| {{yes}} (e.g., elp, profiler.el)
| General-purpose text editor extended into a full IDE via Lisp
|-
|}
 
Line 1,676 ⟶ 1,463:
! EE
! Limitations
|-
! [[Android Studio]]
| {{yes|[[Apache License]] (based on [[IntelliJ IDEA]])}}
| {{no}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| [[ChromeOS]]
| {{yes}}
| {{yes}}
| {{yes}}
| {{no}}
| Not a general-purpose IDE; focused on [[Android app development]]
|-
! [[BlueJ]]
Line 1,965 ⟶ 1,766:
| December 2013
| [[Cross-platform]]
| {{yesproprietary|[[GNU General Public License|GPL]], proprietary}}
| [[Java (programming language)|Java]], [[JavaScript]]
|-
Line 1,993 ⟶ 1,794:
| November 19, 2013
| [[Cross-platform]]
| {{yesproprietary|IDE:[[Proprietary software|Proprietary]], Edit:[[Mozilla Public License|MPL]] 1.1}}
| [[C (programming language)|C]], [[C++]], [[JavaScript]], [[Perl]], [[Python (programming language)|Python]], [[Tcl]], [[XUL]]
|-
Line 2,902 ⟶ 2,703:
! [[Wing IDE|Wing]]<!-- IDE -->
| Wingware<!-- Developer -->
| 1011.0.93<!-- Latest stable version -->
| 2025-0308-2401<!-- Latest stable date -->
| [[Microsoft Windows|Windows]], [[Linux]], [[macOS]]<!-- Platform -->
| {{yes|[[Python (programming language)|Python]]}}<!-- Written in -->
Line 3,288 ⟶ 3,089:
== See also ==
* [[Comparison of assemblers]]
* [[Comparison of compilers]]
* Game integrated development environment
* [[Graphical user interface builder]]
* [[Online integrated development environment]]
* [[List of compilers]]
* [[Source-code editor]]
* [[Game integrated development environment]]
 
== References ==