Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
I have basically tried to add the last digit of the each number and then keep the last digit of the sum in an array while the remaining digits get added to the second last digit and so on..
For some reason I cannot get the correct output, I have been looking for 2 hours but cannot find the an error.
This is the code:
public class Thirteen
{
public static void main(String[] args)
{
String numbers[] = {"37107287533902102798797998220837590246510135740250 ",
"46376937677490009712648124896970078050417018260538 ",
"74324986199524741059474233309513058123726617309629 ",
"91942213363574161572522430563301811072406154908250 ",
"23067588207539346171171980310421047513778063246676 ",
"89261670696623633820136378418383684178734361726757 ",
"28112879812849979408065481931592621691275889832738 ",
"44274228917432520321923589422876796487670272189318 ",
"47451445736001306439091167216856844588711603153276 ",
"70386486105843025439939619828917593665686757934951 ",
"62176457141856560629502157223196586755079324193331 ",
"64906352462741904929101432445813822663347944758178 ",
"92575867718337217661963751590579239728245598838407 ",
"58203565325359399008402633568948830189458628227828 ",
"80181199384826282014278194139940567587151170094390 ",
"35398664372827112653829987240784473053190104293586 ",
"86515506006295864861532075273371959191420517255829 ",
"71693888707715466499115593487603532921714970056938 ",
"54370070576826684624621495650076471787294438377604 ",
"53282654108756828443191190634694037855217779295145 ",
"36123272525000296071075082563815656710885258350721 ",
"45876576172410976447339110607218265236877223636045 ",
"17423706905851860660448207621209813287860733969412 ",
"81142660418086830619328460811191061556940512689692 ",
"51934325451728388641918047049293215058642563049483 ",
"62467221648435076201727918039944693004732956340691 ",
"15732444386908125794514089057706229429197107928209 ",
"55037687525678773091862540744969844508330393682126 ",
"18336384825330154686196124348767681297534375946515 ",
"80386287592878490201521685554828717201219257766954 ",
"78182833757993103614740356856449095527097864797581 ",
"16726320100436897842553539920931837441497806860984 ",
"48403098129077791799088218795327364475675590848030 ",
"87086987551392711854517078544161852424320693150332 ",
"59959406895756536782107074926966537676326235447210 ",
"69793950679652694742597709739166693763042633987085 ",
"41052684708299085211399427365734116182760315001271 ",
"65378607361501080857009149939512557028198746004375 ",
"35829035317434717326932123578154982629742552737307 ",
"94953759765105305946966067683156574377167401875275 ",
"88902802571733229619176668713819931811048770190271 ",
"25267680276078003013678680992525463401061632866526 ",
"36270218540497705585629946580636237993140746255962 ",
"24074486908231174977792365466257246923322810917141 ",
"91430288197103288597806669760892938638285025333403 ",
"34413065578016127815921815005561868836468420090470 ",
"23053081172816430487623791969842487255036638784583 ",
"11487696932154902810424020138335124462181441773470 ",
"63783299490636259666498587618221225225512486764533 ",
"67720186971698544312419572409913959008952310058822 ",
"95548255300263520781532296796249481641953868218774 ",
"76085327132285723110424803456124867697064507995236 ",
"37774242535411291684276865538926205024910326572967 ",
"23701913275725675285653248258265463092207058596522 ",
"29798860272258331913126375147341994889534765745501 ",
"18495701454879288984856827726077713721403798879715 ",
"38298203783031473527721580348144513491373226651381 ",
"34829543829199918180278916522431027392251122869539 ",
"40957953066405232632538044100059654939159879593635 ",
"29746152185502371307642255121183693803580388584903 ",
"41698116222072977186158236678424689157993532961922 ",
"62467957194401269043877107275048102390895523597457 ",
"23189706772547915061505504953922979530901129967519 ",
"86188088225875314529584099251203829009407770775672 ",
"11306739708304724483816533873502340845647058077308 ",
"82959174767140363198008187129011875491310547126581 ",
"97623331044818386269515456334926366572897563400500 ",
"42846280183517070527831839425882145521227251250327 ",
"55121603546981200581762165212827652751691296897789 ",
"32238195734329339946437501907836945765883352399886 ",
"75506164965184775180738168837861091527357929701337 ",
"62177842752192623401942399639168044983993173312731 ",
"32924185707147349566916674687634660915035914677504 ",
"99518671430235219628894890102423325116913619626622 ",
"73267460800591547471830798392868535206946944540724 ",
"76841822524674417161514036427982273348055556214818 ",
"97142617910342598647204516893989422179826088076852 ",
"87783646182799346313767754307809363333018982642090 ",
"10848802521674670883215120185883543223812876952786 ",
"71329612474782464538636993009049310363619763878039 ",
"62184073572399794223406235393808339651327408011116 ",
"66627891981488087797941876876144230030984490851411 ",
"60661826293682836764744779239180335110989069790714 ",
"85786944089552990653640447425576083659976645795096 ",
"66024396409905389607120198219976047599490197230297 ",
"64913982680032973156037120041377903785566085089252 ",
"16730939319872750275468906903707539413042652315011 ",
"94809377245048795150954100921645863754710598436791 ",
"78639167021187492431995700641917969777599028300699 ",
"15368713711936614952811305876380278410754449733078 ",
"40789923115535562561142322423255033685442488917353 ",
"44889911501440648020369068063960672322193204149535 ",
"41503128880339536053299340368006977710650566631954 ",
"81234880673210146739058568557934581403627822703280 ",
"82616570773948327592232845941706525094512325230608 ",
"22918802058777319719839450180888072429661980811197 ",
"77158542502016545090413245809786882778948721859617 ",
"72107838435069186155435662884062257473692284509516 ",
"20849603980134001723930671666823555245252804609722 ",
"53503534226472524250874054075591789781264330331690 " };
String final_sum[]=new String[50];
int sum=0;
for(int x=49;x>=0;x--)
{
for(int y=0;y<100;y++)
{
int temp=Integer.parseInt(numbers[y].substring(x,x+1));
if(y==0)
{
temp=temp+sum;
sum=0;
}
sum=sum+temp;
}
String s=String.valueOf(sum)+" ";
int len=s.length();
final_sum[x]=s.substring(len-2,len-1);
sum=Integer.parseInt(s.substring(0,len-2));
}
System.out.println("ANSWER");
for(int x=0;x<50;x++)
{
System.out.print(final_sum[x]);
}
}
}
You can use BigInteger to work with such data.
Im trying to populate a listview with data from 3 tables using join, and one table to check wether a user is part of a group. But im having trouble getting all the groups for a given user. Heres the tables
Group table
_id | group_name | group_description | group_image
User table
_id | user_name | user_image
Group participants table (this table determines which users are part of which groups)
_id | user_id_foreign | group_id_foreign
Activityobject table
_id | target_id | user_id_foreign | target_type | time | type
Here is the sql statement im trying to get to work:
Cursor c = database
.rawQuery(
"SELECT groups.*, activityobject.time, activityobject.type, user.user_name, user.user_image "
+ "FROM activityobject "
+ "JOIN user "
+ "ON user._id = activityobject.user_id "
+ "JOIN groups"
+ "ON groups._id = activityobject.target_id "
+ "WHERE groups._id IN(SELECT group_id_foreign FROM group_participants WHERE user_id_foreign = ?)"
+ "AND activityobject.target_type = 0 "
+ "GROUP BY groups._id "
+ "ORDER BY activityobject._id",
new String[] { String.valueOf(userId) });
The result i get right now are all the groups that has an activityobject, but not the ones without.
I would like to get all groups for a given user, and if a group has an activityobject i want data from that object aswell.
Thanks in advance!
EDIT:
An image of the tables im refering to
Heres my insert statements with data in the tables
//Activity object table
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (1, 2, 1, 1, 'Alex gruppe', 0, '07-05-13', 1)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (2, 2, 1, 2, 'Jeremys gruppe', 0, '08-06-13', 2)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (3, 2, 1, 2, 'Jeremys gruppe', 1, '09-07-13',3)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (4, 2, 1, 2, 'Jeremys gruppe', 0, '10-08-13', 4)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (5, 2, 1, 1, 'Alex gruppe', 0, '11-09-13', 5)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (6, 2, 1, 1, 'Alex gruppe', 0, '12-10-13', 6)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (7, 2, 1, 1, 'Alex gruppe', 1, '13-11-13', 7)");
db.execSQL("INSERT INTO " + TABLE_ACTIVITYOBJECT + " ("
+ KEY_ACTIVITYOBJECT_ID + ", "
+ KEY_ACTIVITYOBJECT_ACTIVITY_TYPE + ", "
+ KEY_ACTIVITYOBJECT_USER_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_ID + ", "
+ KEY_ACTIVITYOBJECT_TARGET_NAME + ", "
+ KEY_ACTIVITYOBJECT_TARGET_TYPE + ", "
+ KEY_ACTIVITYOBJECT_TIME + ", " + KEY_ACTIVITYOBJECT_OBJECT_ID
+ ") VALUES (8, 2, 1, 1, 'Alex gruppe', 0, '14-12-13', 8)");
// Group table
db.execSQL("INSERT INTO " + TABLE_GROUP + " ( " + KEY_GROUP_ID + ", "
+ KEY_GROUP_NAME + ", " + KEY_GROUP_INFO + ", "
+ KEY_GROUP_IMAGE
+ ") VALUES (1,'alex gruppe', 'mega awesome gruppe', null);");
db.execSQL("INSERT INTO " + TABLE_GROUP + " ( " + KEY_GROUP_ID + ", "
+ KEY_GROUP_NAME + ", " + KEY_GROUP_INFO + ", "
+ KEY_GROUP_IMAGE
+ ") VALUES (2,'jeremy gruppe', 'mega awesome gruppe', null);");
db.execSQL("INSERT INTO " + TABLE_GROUP + " ( " + KEY_GROUP_ID + ", "
+ KEY_GROUP_NAME + ", " + KEY_GROUP_INFO + ", "
+ KEY_GROUP_IMAGE
+ ") VALUES (3,'ole gruppe', 'mega awesome gruppe', null);");
db.execSQL("INSERT INTO " + TABLE_GROUP + " ( " + KEY_GROUP_ID + ", "
+ KEY_GROUP_NAME + ", " + KEY_GROUP_INFO + ", "
+ KEY_GROUP_IMAGE
+ ") VALUES (4,'egon gruppe', 'mega awesome gruppe', null);");
// User table
db.execSQL("INSERT INTO " + TABLE_USER + " (" + KEY_USER_ID + ", "
+ KEY_USER_NAME + ", " + KEY_USER_IMAGE + ", "
+ KEY_USER_STATUS + ") VALUES (1, 'Alex', null, 0)");
db.execSQL("INSERT INTO " + TABLE_USER + " (" + KEY_USER_ID + ", "
+ KEY_USER_NAME + ", " + KEY_USER_IMAGE + ", "
+ KEY_USER_STATUS + ") VALUES (2, 'Peter', null, 0)");
db.execSQL("INSERT INTO " + TABLE_USER + " (" + KEY_USER_ID + ", "
+ KEY_USER_NAME + ", " + KEY_USER_IMAGE + ", "
+ KEY_USER_STATUS + ") VALUES (3, 'Jeremy', null, 0)");
db.execSQL("INSERT INTO " + TABLE_USER + " (" + KEY_USER_ID + ", "
+ KEY_USER_NAME + ", " + KEY_USER_IMAGE + ", "
+ KEY_USER_STATUS + ") VALUES (4, 'Søren', null, 0)");
db.execSQL("INSERT INTO " + TABLE_USER + " (" + KEY_USER_ID + ", "
+ KEY_USER_NAME + ", " + KEY_USER_IMAGE + ", "
+ KEY_USER_STATUS + ") VALUES (5, 'Ole', null, 0)");
// Group participants table
db.execSQL("INSERT INTO " + TABLE_GROUP_PARTICIPANTS + " ( "
+ KEY_GROUP_PARTICIPANTS_ID + ", "
+ KEY_GROUP_PARTICIPANTS_USER_ID_FOREIGN + ", "
+ KEY_GROUP_PARTICIPANTS_GROUP_ID_FOREIGN + ") VALUES(1, 1, 1)");
db.execSQL("INSERT INTO " + TABLE_GROUP_PARTICIPANTS + " ( "
+ KEY_GROUP_PARTICIPANTS_ID + ", "
+ KEY_GROUP_PARTICIPANTS_USER_ID_FOREIGN + ", "
+ KEY_GROUP_PARTICIPANTS_GROUP_ID_FOREIGN + ") VALUES(2, 1, 4)");
db.execSQL("INSERT INTO " + TABLE_GROUP_PARTICIPANTS + " ( "
+ KEY_GROUP_PARTICIPANTS_ID + ", "
+ KEY_GROUP_PARTICIPANTS_USER_ID_FOREIGN + ", "
+ KEY_GROUP_PARTICIPANTS_GROUP_ID_FOREIGN + ") VALUES(3, 2, 2)");
"I would like to get all groups for a given user, and if a group has an activityobject i want data from that object aswell."
You have to use a LEFT JOIN then.
select g.*, a.time, a.type, u.user_name, u.user_image
from groups g
join group_participants gp on gp.group_id_foreign = g._id
left join activityobject a on g._id = a.target_id and a.target_type = 0
left join user u on a.user_id_foreign = u.id
where gp.user_id_foreign = ?
order by a._id;
If you just want to select the last activity object per group (if any), you can add that to the join condition, too:
select g.*, a.*
from groups g
join group_participants gp on gp.group_id_foreign = g._id
left join activityobject a
on g._id = a.target_id and
a.target_type = 0 and
a._id in (select max(_id) from activityobject group by target_id)
left join users u on a.user_id_foreign = u.id
where gp.user_id_foreign = ?
order by a._id;
Just keep in mind that you have to add all filtering criteria for activityobjects to the join condition of the left join, not to the where clause of your main query. Otherwise, you will surpress rows from the result where no matching activityobject can be found, instead of filling up the columns with nulls.
All right, so I have made a basic game, in which I made a character go left and right (using a and d) and allowed it to jump. What I'm trying to do right now is get it so that the terrain generated will allow the character to stop on top of it. For example, if the character jumps, then it will stop on top of a block when it touches it. What I really need is just some basic code that will work well for the code I have already written, not an entire re-writing. And as a side note, many have said to use KeyBindings instead of KeyListener, but the KeyListener works a lot better in the way I'm handling this coding. Thanks for your help!
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.io.*;
import java.net.*;
import java.lang.*;
import static java.lang.Math.*;
import static java.lang.System.out;
import java.util.Random.*;
import java.util.*;
import javax.swing.JApplet;
import java.awt.Graphics;
public class Ultima extends JFrame implements KeyListener
{
String map [][] =
{{" ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", "#", "#", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", " ", " ", " ", " ", " ", " ", " "},
{" ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#"},
{" ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", "#", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#"},
{" ", " ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{" ", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "},
{"#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}};
int score = 0;
double gravity = 1;
boolean jumping = false;
boolean moveRight = false;
boolean moveLeft = false;
boolean jumpRight = false;
boolean jumpLeft = false;
boolean moveRightWhileJumping = false;
boolean moveLeftWhileJumping = false;
final int WIDTH = 900;
final int HEIGHT = 650;
int RESPAWNX = WIDTH/20;
int RESPAWNY = HEIGHT/2;
Rectangle charRect = new Rectangle( RESPAWNX, RESPAWNY, 20, 32 );
JLabel character = new JLabel( new ImageIcon( "characterg.gif" ) );
JLabel scoreLabel = new JLabel( "Score: " + score );
JMenuBar mb = new JMenuBar( );
JMenu menuFile = new JMenu("File");
JMenuItem menuItemSave = new JMenuItem("Save");
JMenuItem menuItemLoad = new JMenuItem("Load");
ArrayList trailList = new ArrayList( );
Runner runner;
Container cont;
JLabel spaceLabel = null;
public static void main( String args[] )
{
new Ultima( );
}
public Ultima( )
{
super( "Ultima" );
setSize( WIDTH, HEIGHT );
setVisible( true );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
cont = getContentPane( );
cont.setLayout( null );
addKeyListener( this );
cont.setBackground( Color.WHITE );
cont.add( mb );
setJMenuBar( mb );
menuFile.add( menuItemSave );
menuFile.add( menuItemLoad );
mb.add( menuFile );
cont.add( scoreLabel );
scoreLabel.setBounds( 50, 50, 100, 30 );
scoreLabel.setFont( new Font( "arial", Font.BOLD, 13 ) );
scoreLabel.setForeground( Color.BLACK );
cont.add( character );
character.setBounds( charRect.x, charRect.y, 20, 32 );
for( int row = 0; row < map.length; row++ )
{
for( int col = 0; col < map[0].length; col++ )
{
if( map[row][col].equals( "#" ) )
{
spaceLabel = new JLabel( new ImageIcon( "block.png" ) );
}
else if( map[row][col].equals( " " ) )
{
spaceLabel = new JLabel(new ImageIcon( "air.png" ) );
}
else
{
}
trailList.add( spaceLabel );
cont.add( spaceLabel );
cont.setComponentZOrder( spaceLabel, 1 );
spaceLabel.setBounds( col*30, row*30, 30, 30 );
}
}
repaint( );
cont.validate( );
runner = new Runner( );
runner.start( );
setContentPane( cont );
}
public void keyPressed( KeyEvent e )
{
if( e.getKeyChar( ) == 'd' || e.getKeyChar( ) == 'D' )
{
moveRight = true;
}
if( e.getKeyChar( ) == 'a' || e.getKeyChar( ) == 'A' )
{
moveLeft = true;
}
}
public void keyReleased( KeyEvent e )
{
if( e.getKeyChar( ) == 'd' || e.getKeyChar( ) == 'D' )
{
moveRight = false;
}
if( e.getKeyChar( ) == 'a' || e.getKeyChar( ) == 'A' )
{
moveLeft = false;
}
}
public void keyTyped( KeyEvent e )
{
if( e.getKeyChar( ) == KeyEvent.VK_SPACE )
{
jumping = true;
}
}
public class Runner extends Thread
{
public void run( )
{
while( true )
{
try
{
int j = 10;
double t = 0;
while( jumping )
{
charRect.y = ( int ) ( charRect.y - j + gravity );
gravity *= 1.2;
character.setBounds( charRect.x, charRect.y, 20, 32 );
repaint( );
cont.validate( );
t++;
Thread.sleep( 30 );//basically, lower #, faster, and higher fps
}
if( moveLeft )
{
charRect.x = charRect.x - ( int ) ( j/5 );
character.setBounds( charRect.x, charRect.y, 20, 32 );
repaint( );
cont.validate( );
t++;
Thread.sleep( 30 );
}
if( moveRight )
{
charRect.x = charRect.x + ( int ) ( j/5 );
character.setBounds( charRect.x, charRect.y, 20, 32 );
t++;
Thread.sleep( 30 );
repaint( );
cont.validate( );
}
scoreLabel.setText( "Score: " + score );
}
catch( Exception e )
{
break;
}
}
}
}
}
I think you will find this guide on implementing 2d platformers useful.