I'm in love, with Python! |
I'm in love, with Python! |
Jul 27 2008, 02:17 AM
Post
#1
|
|
![]() Senior Member ![]() ![]() ![]() ![]() ![]() ![]() Group: Administrator Posts: 2,648 Joined: Apr 2008 Member No: 639,265 |
I started writing a discrete event simulator tonight with a friend of mine. It's going to simulate random D&D encounters. We've both used Python before, but not that much; since we wanted to learn it more, we decided to implement the simulator using Python. And damn, it's awesome! It can do some really interesting stuff. Having mostly used C, C++, and Java in the past, Python has been a liberating experience! Here's an example of its coolness. One of the objects in the simulator is a BattleGrid, which is a simple rectangular grid made up of Square objects, which contain info about the squares. When creating a BattleGrid class, I initialize it with default squares. Here's how the code would look in Java: CODE this.grid = new Square[this.height()][this.width()]; for (int row = 0; row < this.height(); row++) { for (int col = 0; col < this.width(); col++) { this.grid[row][col] = new Square(); } } But in Python, it's only a single line of code! CODE self.grid = [[Square() for w in xrange(self.width)] for h in xrange(self.height)] At one point, I also print out a textual representation of the grid. In Java, the code would be kind of annoying to write: CODE StringBuilder buf = new StringBuilder("Battle Grid " + this.width() + "x" + this.height() + "\n"); for (int row = 0; row < this.height(); row++) { buf.append("|"); for (int col = 0; col < this.width(); col++) { buf.append(this.grid[row][col].moveCost()); } buf.append("|\n"); } String str = new String(buf); str = str.substring(0, str.length()-1); // Trim off the trailing newline character return str; But in Python, it's way easier! CODE desc = ["Battle Grid (%dx%d)" % self.size] for row in self.rows: costs = [str(col.move_cost) for col in row] costs = " ".join(costs) dstr = "|%s|" % costs desc.append(dstr) return "\n".join(desc) I think I'm in love. |
|
|
|
mipadi I'm in love Jul 27 2008, 02:17 AM
XTC I know for a fact you're in love. And I don... Jul 27 2008, 04:08 AM
mipadi I discovered a bunch of other cool stuff, but I st... Aug 1 2008, 02:31 PM
KryMeARiver I still haven't made good on my goal to learn ... Aug 1 2008, 05:43 PM![]() ![]() |