此程序是学习视频设计出来的,完成的大概的雏形,还是有少许bug,正在努力完善
各位有什么意见可以交流下
附部分代码,图片,程序打包如下:
Mario类代码:
package org.liky.mario;
import java.awt.image.BufferedImage;
import javax.swing.JOptionPane;
public class Mario implements Runnable {
private int x;
private int y;
private BackGround bg;
public void setBg(BackGround bg) {
this.bg = bg;
}
private Thread t=null;
private int xmove=0;
private int ymove=0;
private String status;
public int getX() {
return x;
}
public int getY() {
return y;
}
public BufferedImage getShowImage() {
return showImage;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
private BufferedImage showImage;
private int score;
private int life;
private int moving=0;
public boolean isClear() {
return isClear;
}
private int upTime=0;
private boolean isDead=false;
private boolean isClear=false;
public Mario(int x,int y){
this.x=x;
this.y=y;
this.showImage=StaticValue.allMarioImage.get(0);
this.score=0;
this.life=3;
t=new Thread(this);
t.start();
this.status="right--standing";
}
public void leftMove(){
xmove=-5;
if(this.status.indexOf("jumping")!=-1){
this.status="left--jumping";
}else{
this.status="left--moving";
}
}
public void rightMove(){
xmove=5;
if(this.status.indexOf("jumping")!=-1){
this.status="right--jumping";
}else{
this.status="right--moving";
}
}
public void leftStop(){
xmove=0;
if(this.status.indexOf("jumping")!=-1){
this.status="left--jumping";
}else{
this.status="left--standing";
}
}
public void rightStop(){
xmove=0;
if(this.status.indexOf("jumping")!=-1){
this.status="right--jumping";
}else{
this.status="right--standing";
}
}
public void jump(){
if(this.status.indexOf("jumping")==-1){
if(this.status.indexOf("left")!=-1){
this.status="left--jumping";
}else{
this.status="right--jumping";
}
ymove=-5;
upTime=38;
}
}
public boolean isDead() {
return isDead;
}
public void dead(){
this.life--;
if(this.life==0){
this.isDead=true;
}else{
this.bg.reset();
this.x=0;
this.y=480;
}
}
public void down(){
if(this.status.indexOf("left")!=-1){
this.status="left--jumping";
}else{
this.status="right--jumping";
}
ymove=5;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
if(this.bg.isFlag() && this.x>=500){
this.bg.setOver(true);
if(this.bg.isDown()){
if(this.x<580){
x+=5;
}else {
if(y<480){
y+=5;
}
x+=5;
if(x>=780){
this.isClear=true;
}
}
}else{
if(this.y<420){
this.y+=5;
}
if(this.y>=420){
this.y=420;
this.status="right--standing";
}
}
}else{
boolean canLeft=true;
boolean canRight=true;
boolean onLand=false;
for(int i=0;i<this.bg.getAllObstruction().size();i++){
Obstruction ob =this.bg.getAllObstruction().get(i);
if(ob.getX()==this.x+60 && (ob.getY()+50>this.y && ob.getY()-50<this.y)){
if(ob.getType()!=3){
canRight=false;
}
}
if(ob.getX()==this.x-60 && (ob.getY()+50>this.y && ob.getY()-50<this.y)){
if(ob.getType()!=3){
canLeft=false;
}
}
if(ob.getY()==this.y+60 && (ob.getX()+60>this.x && ob.getX()-60<this.x)){
if(ob.getType()!=3){
onLand=true;
}
}
if(ob.getY()==this.y-60 && (ob.getX()+50>this.x && ob.getX()-50<this.x)){
if(ob.getType()==0){
this.bg.getAllObstruction().remove(ob);
this.bg.getRemovedObstruction().add(ob);
}
if((ob.getType()==4 || ob.getType()==3) && upTime>0){
ob.setType(2);
ob.setImage();
}
upTime=0;
}
}
for (int i=0;i<this.bg.getAllEnemy().size();i++){
Enemy e=this.bg.getAllEnemy().get(i);
if(e.getX()+50>this.x && e.getX()-50<this.x && (e.getY()+60>this.y && e.getY()-60<this.y)){
this.dead();
}
if(e.getY()==this.y+60 && (e.getX()+60>this.x && e.getX()-60<this.x)){
if(e.getType()==1){
e.dead();
this.upTime=10;
this.ymove=-5;
}else if (e.getType()==2){
this.dead();
}
}
}
if(onLand && upTime==0){
if(this.status.indexOf("left")!=-1){
if(xmove!=0){
this.status="left--moving";
}else{
this.status="left--standing";
}
}else{
if(xmove!=0){
this.status="right--moving";
}else{
this.status="right--standing";
}
}
}else{
if(upTime!=0){
upTime--;
}else{
this.down();
}
y +=ymove;
}
if(this.y>600){
this.dead();
}
if (canLeft && xmove<0 || (canRight && xmove>0)){
x+=xmove;
if(x<0){
x=0;
}
}
}
int temp=0;
if(this.status.indexOf("left")!=-1){
temp+=5;
}
if(this.status.indexOf("moving")!=-1){
temp+=this.moving;
moving++;
if(moving==4){
moving=0;
}
}
if(this.status.indexOf("jumping")!=-1){
temp +=4;
}
this.showImage=StaticValue.allMarioImage.get(temp);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}

- 大小: 63.5 KB
分享到:
相关推荐
C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级...
使用C++编写的超级玛丽小游戏源码 使用C++编写的超级玛丽小游戏源码 使用C++编写的超级玛丽小游戏源码 使用C++编写的超级玛丽小游戏源码 使用C++编写的超级玛丽小游戏源码 使用C++编写的超级玛丽小游戏...
超级玛丽游戏教程+源码 创建游戏主窗口 pygame 专门提供了一个 模块 pygame.display 用于创建、管理游戏窗口 方法 说明 pygame.display.set_mode() 初始化游戏显示窗口 pygame.display.update() 刷新屏幕内容显示 ...
python超级玛丽小游戏+可执行程序+源码+程序配置说明 在PyCharm中运行《玛丽冒险》即可进入如图1所示的游戏主界面。 具体的操作步骤如下: (1)游戏主窗体界面显示后,游戏的背景地图将自动加载与移动,此时会随机...
基于C++语言实现的超级玛丽游戏源码(含图片和背景音乐) 基于C++语言实现的超级玛丽游戏源码(含图片和背景音乐) 基于C++语言实现的超级玛丽游戏源码(含图片和背景音乐) 基于C++语言实现的超级玛丽游戏源码(含图片和...
《经典超级玛丽源码解析与学习指南》 超级玛丽,这款经典的8位游戏,承载了无数人的童年记忆。本文将围绕“经典超级玛丽源码”这一主题,详细讲解C# Unity2D环境下如何实现这款游戏,并深入探讨其背后的编程原理和...
【超级玛丽H5源码详解】 在当前的互联网环境中,HTML5技术已经成为了构建网页游戏和互动应用的重要工具。本篇文章将详细探讨基于HTML5的"超级玛丽H5源码",帮助读者理解如何利用这项技术重制经典游戏。 一、HTML5...
在这个“Unity 3D超级玛丽游戏源码”项目中,我们可以深入学习Unity引擎在构建经典平台跳跃游戏时所涉及的关键技术和概念。 首先,源码结构可能包括多个场景(Scenes)文件,每个场景代表游戏的一个关卡。在Unity中...
"HTML5实现的超级玛丽游戏源码"是一个基于HTML5、CSS3和JavaScript构建的致敬经典游戏《超级玛丽》的项目。这个项目展示了HTML5在游戏开发领域的应用,以及如何通过WebGL或Canvas元素来实现2D渲染。 首先,我们要...
经典的超级玛丽游戏源码,完美实现了原游戏的所有细节,文件里有说明文档,可以自己编译后续关卡,需要的图片的资源都在文件里面
【Android超级玛丽源码解析】 在移动开发领域,Android是一个非常流行的操作系统,它为开发者提供了丰富的工具和框架来创建各种应用程序,包括游戏。"Android超级玛丽源码"是一个典型的移动游戏开发示例,它基于...
在"python超级玛丽项目源码"中,pygame 1.9.2版本被使用,它为游戏的图形界面、音乐播放、碰撞检测等关键部分提供了支持。例如,pygame.display模块用于创建和管理游戏窗口,pygame.image模块用于加载和显示图片,...
【超级玛丽Android源码】项目是一个将经典游戏“超级玛丽”移植到Android平台的实例,旨在帮助开发者了解如何在移动设备上构建2D游戏。这个项目涵盖了Android游戏开发中的多个重要知识点,包括游戏循环、碰撞检测、...
"C语言实现的超级玛丽游戏源码完整版"是一个学习C语言编程和游戏开发的绝佳实例。下面将详细探讨这个项目中涉及的相关知识点。 1. **C语言基础**: - 变量与数据类型:C语言中的基本数据类型如int、char、float等...
超级玛丽源码中的碰撞检测代码可能包含复杂的几何判断和坐标系统,这对于游戏中的物理模拟和交互性至关重要。 关卡设计是游戏体验的关键组成部分。源码中可能包含关卡数据的结构,以及加载和解析这些数据的算法。这...
超级玛丽游戏GUI(源码+lun文+视频齐全)超级玛丽游戏GUI(源码+lun文+视频齐全)超级玛丽游戏GUI(源码+lun文+视频齐全)超级玛丽游戏GUI(源码+lun文+视频齐全)超级玛丽游戏GUI(源码+lun文+视频齐全)超级玛丽游戏GUI(源码...
《超级玛丽游戏源码》是一款基于经典游戏"超级玛丽"的源代码集合,它包含了游戏的前四个关卡。这个游戏自上世纪80年代问世以来,以其独特的玩法、丰富的关卡设计和可爱的角色形象赢得了全球玩家的喜爱。源码的开放为...
《Android童年小游戏超级玛丽源码解析与学习指南》 在Android平台上开发游戏,不仅可以满足开发者的技术探索欲望,也能为玩家带来独特的娱乐体验。本篇文章将深入探讨一款基于Android平台的童年经典游戏——超级...
《超级玛丽Python源码解析与游戏开发初探》 在编程世界中,经典游戏的重制或复刻经常被用来作为学习新语言或框架的实践项目。本文将深入探讨一个基于Python的“超级玛丽”游戏源码,通过分析源码,我们可以了解...
【Python小游戏源码-超级玛丽项目源码】 Python作为一种易学且功能强大的编程语言,不仅在数据处理、科学计算等领域广泛应用,还非常适合开发各种类型的游戏,包括经典的2D平台游戏,如“超级玛丽”。这个项目源码...